2015-03-08 98 views
0

你好,我是一个新的红宝石在rails.I试图保存在数据库中选择标记的值,但它不会被保存。有人可以告诉我我做错了什么。我是否正确使用表格中的选择标签选择标记选项没有被保存在数据库

<%= 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 %> 
+0

改为使用collection_select标记。 – sansarp 2015-03-08 17:12:43

+0

你可以引用我的链接,我试图了解它,但我不能 – Gardezi 2015-03-08 17:13:48

回答

0

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

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

而且资源可以在 Rails FormOptionsHelper

+0

詹姆斯你可以替换:用户与:category,:user_id与:category_id,User.all与@categories和:first_name与作者。希望它现在可以工作。 – sansarp 2015-03-08 17:30:49

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的日志文件(显示在屏幕上的发展模式)的“类别不允许”的消息。

相关问题