0

Ingredients と Foods の 2 つのモデルがあります。

class Food < ActiveRecord::Base

    belongs_to :user
    has_many :ingredients

    accepts_nested_attributes_for :ingredients

    attr_accessible :name, :price
end

class Ingredient < ActiveRecord::Base

    belongs_to :user
    belongs_to :food

    attr_accessible :ingredient_name, :quantity_used
end

2 つのモデルのスキーマは次のとおりです。

  create_table "foods", :force => true do |t|
    t.string  "name"
    t.integer "user_id"
    t.float   "price"
    t.string  "ingredient_name"
  end

  create_table "ingredients", :force => true do |t|
    t.string  "ingredient_name"
    t.integer "user_id"
    t.integer "food_id"
    t.integer "quantity_used"
  end

Ingredient テーブルも作成/更新する Food のフォームを作成しています。フォームが機能しており、送信ボタンで正しい属性が更新されますが、各テーブルに他の属性も更新したいです。たとえば、Food Controller では、次のようなことをしたいと考えていますingredient.user_id = current_user.id。params[:food] を介してアクセスできることは理解していますが、フォームによって更新されていない個々のフィールドにアクセスするにはどうすればよいですか?

現在、私のフォームは次のとおりです。

<%= form_for(@food) do |f| %>
  <div class="field">
    <%= f.label :Name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :price %><br />
    <%= f.number_field :price %>
  </div>
    <div>
        <%= f.fields_for :ingredients do |builder| %>
        <%= builder.label "Ingredient Used:" %>
        <%= builder.text_field :ingredient_name %><br />
            <%= builder.label "Quantity Used:" %>
            <%= builder.text_field :quantity_used %><br />
        <% end %>
    </div>
    <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

Food#create アクションでこの特定の Food の材料にアクセスするにはどうすればよいですか?

ありがとう!

4

1 に答える 1

2

Food モデルのattr_accessibleに:ingredients_attributesを追加する必要があるかもしれません。

:ingredients_attributesを繰り返し処理することで、コントローラーの params ハッシュを台無しにするか、 assign_attributesを使用できます。

于 2013-04-28T23:54:48.753 に答える