【问题标题】:show already selected items in rails select drop down在 rails select 下拉菜单中显示已选择的项目
【发布时间】:2016-12-07 23:57:39
【问题描述】:

我在 rails 中有一个选择框。编辑记录时,我希望突出显示先前选择的项目。

我有

    <div class="field">
    <td><%= f.label :keywords %>(Use Control-Click to select multiple keywords)</td>
    <td>  <%= f.select :keywords,
                       options_for_select(@keywords,
                       :selected => @keywords),
                       {:include_blank => false},
                       {:multiple => true, :size =>10}  %>

    </div>

我在上面的 :selected => 语句上尝试了几种变体,但无法得到我想要的。

我正在寻找的是当用户编辑记录时,f.select 将预先选择数据库中的选择。

我确实在这里看到了一个“问题”,即使项目是预先选择的,如果用户在没有按 Control 键的情况下点击任何项目,那么预先选择的项目就会丢失。

--------更新-----------

表格

    <%= form_for @bedsheet_line, :html => 
{ :class => 'form-horizontal', multipart: true} do |f| %>

【问题讨论】:

标签: ruby-on-rails


【解决方案1】:

我得到了这个工作。

我将表单下拉元素更改为

<%= f.select :keywords,
                               options_for_select(@keywords,
                               :selected =>     previous_keywords),
                               {:include_blank => false},
                               {:multiple => true, :size =>11}  %>

不同之处在于选中的 => 调用了一个名为 previous_keywords 的 def。

previous_keywords 在我的控制器中,看起来像

# ---------------------------------------- 以前的关键字 ---- ------------------------------------------ # 这旨在获取已为床单输入的关键字。这样如果床单记录是 # 已编辑,则如果记录被编辑,则将选择关键字。 # # 注意 - eval 函数是有风险的。但是,由于这是一个内部应用程序,并且输入来自 # 一个选择框,那么风险应该是可以接受的。

 helper_method :previous_keywords

  def previous_keywords



   @current_bedsheet_line = BedsheetLine.find(params[:id])           # grab the current bedsheet line
    @previous_keywords = @current_bedsheet_line.keywords              # get the keywords for the current bedsheet line

    keywords = Array.new

    keywords  = eval(@previous_keywords)                              # NOTE - the eval function is risky if there is any outside traffic.

   return keywords
  end

注意 - eval 函数是有风险的。但是,此应用程序仅供内部使用,不处理财务或其他敏感数据,并且提供给 eval 的内容来自下拉列表中的数据库。因此,应降低风险。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    相关资源
    最近更新 更多