我正在玩Form Helpers。我从另一个SO问题中找到了一些代码,并且认为在创建具有优雅循环的单选按钮时非常有效。现在我已经合并了它,它没有保存数据(例如 category 值没有保存到项目表中)
请参阅以下 _form.html.erb
的代码<%= form_for(@project) do |f| %>
<% if @project.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@project.errors.count, "error") %> prohibited this project from being saved:</h2>
<ul>
<% @project.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :title %><br>
<%= f.text_field :title %>
</div>
<div class="form_row">
<label for="category">Category:</label>
<% [ 'checklist', 'process'].each do |category| %>
<br><%= radio_button_tag 'category', category, @category == category %>
<%= category.humanize %>
<% end %>
<br>
</div>
<div class="field">
<%= f.label :description %><br>
<%= f.text_field :description %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
答案 0 :(得分:2)
您的单选按钮参数正在project
结构之外创建。如果你看params
,你可能会看到
{:category => "your_category", :project => {...project params...}}
这是因为您使用radio_button_tag
而不是常规表单助手。试试这个:
f.radio_button :category, category, :checked => (@category == category)
此外,正如贾斯汀所说,请确保:category
包含在您的控制器的project_params
中。