我正在使用Rails 3.0,Ruby 1.9.2和Plataformatec simple_form gem。此代码适用于form_for但不适用于simple_form_for:
<%= simple_form_for(@provider) do |f| %>
<% Car.all.each do |c| %>
<div>
<%= check_box_tag :car_ids, c.id, @store.cars.include?(c), :name => 'store[car_ids][]' %>
$<%= c.cost %> | <%= c.description %>
</div>
<% end %>
<div class="actions">
<%= f.submit "New" %>
</div>
<% end %>
如何使用simple_form_for?
提前致谢!
答案 0 :(得分:0)
您无法像simple_form
一样使用form_for
。
例如,check_box_tag
gem中没有任何simple_form
方法。您只能使用inuput
选项指定:as
个字段。因此,您的check_box_tag
将转换为
f.input car_ids, ..., :as => :check_box
Checkout Usage,Rdoc和其他有用的东西https://github.com/plataformatec/simple_form
答案 1 :(得分:0)
问题出在控制器代码中。
在“新”控制器动作中,我不能简单地执行:
@provider = Provider.new(params[:provider])
正如人们通常的那样。
相反,我必须分别处理每个参数:
@ provider.location = params [:provider] [:location] 等...
对于Car复选框,我将car_ids参数中的每个car_id一次添加到“has_many”汽车模型关联中:
car_ids = params[:provider][:car_ids]
car_ids.each do |cid|
@provider.cars << Car.find(cid)
end
然后我可以致电:
@provider.save!
它可以正确保存(我最初的问题是它没有保存选定的汽车)。
出于某种原因,我只有在这里发布问题后才能解决这个问题。有趣的是如何运作。
感谢所有人的回复!