我有模型restaurant
和lunch
。餐厅has_many :lunches
和午餐belongs_to :restaurant
。有了这些关系,我想把所有可用的餐馆都显示为复选框。
lunch.rb看起来像这样:
attr_accessible :date, :email, :name, :restaurant_id
belongs_to :restaurant
但我发现很难做到。有人能解释check_box_tag中所有的参数吗?
我收到了一段代码并进行了相应的修改,但它不起作用。
<div class="form_row">
<label for="restaurant_id[]">Restaurants:</label>
<% for restaurant in Restaurant.find(:all) do %>
<br><%= check_box_tag 'restaurant_id[]', restaurant.id %>
<%= restaurant.name.humanize %>
<% end %>
</div>
但是当我看到日志restaurant_id
为零时。
答案 0 :(得分:0)
您可以在此处获得相关的表单助手文档:
http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-check_box
<%= check_box_tag(:restaurant, restaurant.id) %>
输出:
<input id="restaurant" name="restaurant" type="checkbox" value=restaurant.id />
check_box_tag的第一个参数当然是输入的名称。第二个参数当然是输入的值。选中复选框后,此值将包含在表单数据中(并存在于参数中)。
http://guides.rubyonrails.org/form_helpers.html
源代码:
http://apidock.com/rails/ActionView/Helpers/FormHelper/check_box
# File actionpack/lib/action_view/helpers/form_helper.rb, line 929
def check_box(object_name, method, options = {}, checked_value = "1", unchecked_value = "0")
Tags::CheckBox.new(object_name, method, self, checked_value, unchecked_value, options).render
end
答案 1 :(得分:0)
如果您有此关联,则无法使用复选框标记:
您应该在午餐表格上使用选择标签(singel select)或单选按钮标签,因为午餐只有一家餐厅。
使用select:
的示例<%= f.label :restaurant_id, 'Restaurant Name' %>
<%= f.collection_select(:restaurant_id, Restaurant.all, :id, :name, :prompt => 'Please select restaurant') %>