簡體   English   中英

如何在Rails中為嵌套屬性傳遞參數?

[英]How are parameters passed for nested attributes in Rails?

我有兩種型號,配料和食品:

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

兩種模型的模式如下:

  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

我正在為Food創建一個表單,它也會創建/更新Ingredient表。 我有表單工作,並且提交按鈕更新了正確的屬性,但我還想在每個表中更新其他屬性。 例如,在食物控制器中,我想做一些像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 action中訪問此特定Food的成分?

謝謝!

您可能需要在Food模型中將:ingredients_attributes添加到attr_accessible

您可以通過迭代:ingredients_attributes來控制控制器中的params哈希,或者您可以使用assign_attributes

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM