![](/img/trans.png)
[英]How do I create a named has_many and belongs_to association in Rails 4.2?
[英]In Rails 3.1 How do I create a select list for a form that has a belongs_to association?
GIST在這里: https : //gist.github.com/1553371
這些是我的模型:
class Character < ActiveRecord::Base
has_many :weapons
end
class Weapon < ActiveRecord::Base
belongs_to :character
end
這就是我對HAML的看法:
= form_for(@weapon) do |f|
%ul.fields
%li
= f.label :character
= collection_select :weapon, :character_id, Character.all, :id, :name, {:prompt => 'Please Select a Character.'}
但我一直收到這個錯誤:
undefined method `character_id' for #<Weapon:0x007f9033232088>
我試過使用字符串作為character_id
,但也沒用。 表單呈現為:character
,但當然它不會保存,因為它需要id
。
您的代碼看起來很好,很可能您的武器模型上沒有character_id
字段。 如果您這樣做,則表示您需要運行待定遷移。
您可以通過查看db/schema.db
來檢查數據庫的當前狀態,如果您有character_id列,它將顯示。
您可以使用rake db:migrate
運行rake db:migrate
然后使用rake db:test:prepare
來更新測試數據庫。
如果在運行遷移后它無法正常工作,那么您需要創建一個,應該看起來像:
# db/migrations/add_character_id_to_weapons.rb
class AddCharacterIdToWeapons < ActiveRecord::Migration
def change
add_column :weapons, :character_id, :integer
end
end
api文檔:
collection_select(method, collection, value_method, text_method, options = {}, html_options = {})
所以你要
f.collection_select( :character_id, Character.all, :id, :name, {:prompt => 'Please Select a Character.'} )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.