0

このトピックのフォローアップ: (Rails) 親のフォームで子レコード (1 対多) を表示する方法は?

多くの製品を含むカテゴリを作成しています。そこで、ユーザー Chandra Patni が提案したように、Formtastic を使用します。しかし、product.rb に attr_accessible を追加したときに問題があることがわかりました。

class Product < ActiveRecord::Base
  validates_presence_of :title, :price
  validates_numericality_of :price
  validates_uniqueness_of :title

  attr_accessible :category_id, :name
  belongs_to :category

end

そして、これはcategory.rbです:

class Category < ActiveRecord::Base
  attr_accessible :name
  has_many :products
end

attr_accessible :category_id, :name を追加した後、入力しても検証が狂ってしまい、テキスト値で null として扱われます。しかし、attr_accessible :category_id, :name を削除すると、すべてが機能します。

もう1つ、 products/new.html.erb に、商品情報を入力するためにこれを作成しましたが、

<% semantic_form_for @product do |f| %>  
  <% f.inputs do %>  
    <%= f.input :title %>  
    <%= f.input :price %>  
    <%= f.input :photoPath %>  
    <%= f.input :category %>  
  <% end %>  
  <%= f.buttons %>  
<% end %>

しかし、カテゴリ名ではなく :category id を返すことがわかりました。私は何をすべきか?高度なThx。

4

1 に答える 1

1

attr_accessibleレールに一括割り当てを実行するには、他の属性を追加する必要があります。

attr_accessible :category_id, :name, :title, :price, :photoPath

attr_accessibleRails は、 (ホワイト リスト)で指定された属性がある場合にのみ、一括割り当てを行います。セキュリティの観点から必要です。Rails は、メソッドを介して一括割り当てをブラックリストに登録する方法も提供しますattr_protected

nameモデルに属性がある場合、カテゴリのドロップダウンが表示されますCategoryこれこれを参照してください。

class Category < ActiveRecord::Base
  has_many :products
  attr_accessible :name    
end
于 2010-01-03T05:27:43.910 に答える