单选按钮数据未保存

时间:2014-05-15 23:26:57

标签: ruby-on-rails

我正在玩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 %>

1 个答案:

答案 0 :(得分:2)

您的单选按钮参数正在project结构之外创建。如果你看params,你可能会看到

{:category => "your_category", :project => {...project params...}}

这是因为您使用radio_button_tag而不是常规表单助手。试试这个:

f.radio_button :category, category, :checked => (@category == category)

此外,正如贾斯汀所说,请确保:category包含在您的控制器的project_params中。