您好我是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 %>
答案 0 :(得分:0)
请参考我在项目中实施的以下用法。
<%= collection_select :user, :user_id, User.all, :id, :first_name,
{:prompt => 'Please Select the User'} %>
找到更多资源
答案 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日志文件(在开发模式下在屏幕上打印)以获取“不允许的类别”消息。