我試圖將這些模型關聯到創建欄的動作。協會!爲什麼那麼無?
我知道bar和type都是nil沒有創建的對象,但爲什麼ruby不明白我想要的只是綁定這些nil對象?
所以,我搜索的答案,但他們沒有解釋清楚爲什麼這個錯誤:的零名爲id,這將被錯誤地4 - 如果你真的想零的ID,請使用OBJECT_ID
發生在這種情況下。
用戶 - 型號
has_one :bar
酒吧 - 型號
belongs_to :type
belongs_to :user
類型 - 型號
has_many :bars
酒吧 - 控制器
def new
@bar = Bar.new
end
def create
@bar = current_user.build_bar(params[:bar].merge(:type_id => @type.id))
if @bar.save
flash.now[:success] = "Wohoo!"
redirect_to @bar
else
render :new
end
end
New_bar - 查看
<div class="block">
<%= render 'shared/flash_messages' %>
<%= form_for @bar, :url => bars_path, :method => :post do |b| %>
<ul>
<li><%= b.label :name %><%= b.text_field :name %></li>
<%= b.fields_for :type do |t| %>
<li>pirate:<%= t.radio_button :style, "pirate" %></li>
<li>pub:<%= t.radio_button :style, "pub" %></li>
<li>american:<%= t.radio_button :style, "american" %></li>
</ul>
<% end %>
<%= b.submit "create", :class => "sec button" %>
<% end %>
</div>
順便說一句,你可能不想使用「type」作爲模型名稱。參見例如http://juicebar.wordpress.com/2007/05/30/reserved-words-in-rails/ – 2012-03-10 22:39:24
woow!我從來沒有想過這個,鐵軌充滿了隱藏的技巧! – dcalixto 2012-03-10 23:02:19