选择标记选项未保存在DB中

时间:2015-03-08 17:04:37

标签: ruby-on-rails ruby

您好我是rails上的ruby新手。我正在尝试在数据库中保存select标签的值,但它没有被保存。有人能告诉我我做错了什么。我是否正确使用表格中的选择标签

<%= link_to("Back" , {:action => 'rpage'}) %>
<%= form_for(:request , :url => {:action => 'servicecreate'}) do |f| %>
  <div class="field">
    <%= f.label :when %><br>
    <%= f.text_field :when %>
  </div>
  <div class="field">
    <%= f.label :where %><br>
    <%= f.text_field :where %>
  </div>
  <div class="field">
    <%= f.label :what %><br>
    <%= f.text_field :what %>
  </div>
  <!--<%= f.select :category,  @categories.each do |article| article end %>-->
  <select name=:category>
    <% @categories.each do |author| %>
        <option value="<%= author %>"><%= author %></option>
    <% end %>
  </select>

  <div class="field">
    <%= f.label :negotiable %><br>
    <%= f.text_field :negotiable %>
  </div>

  <div class="field">
    <%= f.label :price %><br>
    <%= f.text_field :price %>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

2 个答案:

答案 0 :(得分:0)

请参考我在项目中实施的以下用法。

<%= collection_select :user, :user_id, User.all, :id, :first_name,
{:prompt => 'Please Select the User'} %>

可在 Rails FormOptionsHelper

找到更多资源

答案 1 :(得分:0)

您似乎已注释掉f.select表单帮助程序 - 而是使用显式<select>标记替换它。但是,Rails期望使用其表单助手强制执行特定的字段命名约定。在这种情况下,<select>代码名称应为request[category]

所以,如果你曾经使用过

  f.select :category, @categories

Rails会生成以下HTML(假设为@categories=['a','bb','ccc']):

<select name="request[category]" id="request_category">
  <option value="a">a</option>
  <option value="bb">bb</option>
  <option value="ccc">ccc</option>
</select>

另一个问题可能是category字段未在控制器中列入白名单。例如。你应该有像

这样的东西
 params.require(:request).permit(:when, :where, :what, :category, :negotiable, :price)

检查Rails日志文件(在开发模式下在屏幕上打印)以获取“不允许的类别”消息。