【问题标题】:Rails 4 form: display database value in select fieldRails 4表单:在选择字段中显示数据库值
【发布时间】:2015-10-23 17:58:54
【问题描述】:

Stack Overflow 上有类似的问题,例如this onethat one,我尝试了建议的答案,但无法解决我的问题。

我有一个 Rails 表单 - 不是 simple_form 表单 - 在我的新视图中包含以下字段:

<div class="field">
  <%= f.label :price, "Hourly Rate ($)" %><%= f.select :price, ['10', '20', '30', '40', '50', '60', '70', '80', '90', '100'] %>
</div>

然后,我想在我的编辑视图中重新显示这个表单,并使用保存到数据库中的值,所以我尝试了:

<div class="field">
  <%= f.label :price, "Hourly Rate ($)" %><%= f.select :price, ['10', '20', '30', '40', '50', '60', '70', '80', '90', '100'], :selected => current_user.price %>
</div>

问题是选择字段显示第一个值而不是我期望的值。

————

更新:按照下面给出的答案,我实现了以下代码:

<div class="field">
  <%= f.label :price, "Hourly Rate ($)" %>
  <%= f.select :price, [['10', '10'],['20','20'],['30','30'],['40','40'],['50','50'],['60','60'],['70','70'],['80','80'],['90','90'],['100','100']], selected: current_user.price, include_blank: 'Select your price' %>
</div>

它似乎不起作用。除非我犯了错误?

————

知道如何进行这项工作吗?

【问题讨论】:

  • 你的表单真的绑定到current_user了吗?

标签: ruby-on-rails forms ruby-on-rails-4 drop-down-menu


【解决方案1】:

您不需要两个单独的表格。

new.html.erbedit.html.erb 中输入以下内容:

<%= render 'hourly_rate' %>

然后在 _hourly_rate.html.erb 中输入以下内容:

<div class="field">
  <%= f.label :price, "Hourly Rate ($)" %>
  <%= f.select :price, options_for_select([['10',1], ['20',2], ['30',3], ['40',4], ['50',5], ['60',6], ['70',7], ['80',8], ['90',9], ['100',10]], @your_obj.price) %>
</div>

其中@your_obj.price 类似于 1、2、3...(或者您可以根据需要将其修改为实际价格。您只需要相应地更改数组)。

options_for_select 方法是一个助手,它的第二个参数允许您通过传递其值来预先选择一个选项。有关更多信息,请查看docs

【讨论】:

    【解决方案2】:

    试试这个:

    <div class="field">
      <%= f.label :price, "Hourly Rate ($)" %><%= f.select :price, [['10', '10'],['20','20'],['30','30'],['40','40'],['50','50'],['60','60'],['70','70'],['80','80'],['90','90'],['100','100']], selected: current_user.price, include_blank: 'Select your price' %>
    </div>
    

    您应该传递一个数组数组,其中左边的单元格是名称,右边的​​单元格是值,然后按值而不是按名称传入,您也应该在第一种形式中使用它:

    <div class="field">
      <%= f.label :price, "Hourly Rate ($)" %><%= f.select :price, [['10', '10'],['20','20'],['30','30'],['40','40'],['50','50'],['60','60'],['70','70'],['80','80'],['90','90'],['100','100']] %>
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-27
      • 2022-08-19
      • 1970-01-01
      • 2016-01-15
      • 2013-03-12
      相关资源
      最近更新 更多