0

ユーザーがレールに関連付けられたストアを作成できるようにするフォームを作成しようとしています。

has_many と belongs_to の関連付けが設定されていますが、関連付けが機能しているかどうかを確認するためにストアをデータベースに保存することさえできないようです。

現在、私の店のフォーム#new view 私は持っています:

<%= form_for @store do |f| %>

<div class = "field">
    <%= f.label :name %>
    <%= f.text_field :name %>
</div>

<%= f.submit "Submit" %>

<% end %>

私の new および create アクションについては、ストアコントローラーに次のものがあります

def new
  @store = Store.new
end

def create
  @user = current_user 
  @store = @user.stores.new(params[:stores])

  if @store.save
    redirect_to store_path
  else
    render newstore_path
  end
end

私のモデル名も間違いなく単数形です(店)。

これは過去に私にとってうまくいったので、なぜ今そうでないのか混乱しています。

ネストされたリソースを使用して 2 つのモデルを正常に関連付ける最も簡単な方法を誰かが教えてくれ、この関連付けを維持するフォームを作成できれば、信じられないほど役に立ちます。私は過去数日間これに苦労しており、確かな例を本当に考えているからです。役立つだろう。

ただし、人々が提供できる情報はすべて優れています。前もって感謝します :)

4

2 に答える 2

1

これはネストされたリソースのフォームであるため、おそらく必要になるでしょう。

<%= form_for [@user, @store] do |f| %>

new ではなく、コントローラーの create アクションで create または build を使用してみることもできます。

ネストされたモデルのフォームに関する優れた Railscast もあります。

http://railscasts.com/episodes/196-nested-model-form-revised

于 2012-05-15T21:35:10.960 に答える
0

You don't need any nested attributes here. you are in the Store controller and i assume the store#new view too. So you are just creating a store with the user_id field as current_user.id or current_user.stores.build(params[:stores]) should be working in your create method.

Let's see your view first too, and what does console say when you do u = User.first; u.stores.create!

Lastly, imo, this is just a User has many stores association, no need for a habtm.

于 2012-05-16T14:21:28.063 に答える