2016-12-06 69 views
0

我在轨中有一个选择框。在编辑记录时,我希望先前选定的项目突出显示。显示已在轨中选择的项目选择下拉列表

<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> 

我试过一对夫妇的变化:选择=>语句以上,但不能得到我想要的东西。

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

我在这里看到一个“Gotcha”,即使这些项目是预先选定的,如果用户没有按住Control键点击任何项目,那么预选项目将会丢失。

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

形式

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

你可以发表标题表单吗? (<%form_for ...) – inye

+0

@inye - 我只是将它添加到原始文章。 –

+1

你看到这个http://stackoverflow.com/questions/2196382/rails-select-tag-with-multiple-values-pre-selected? – inye

回答

0

我得到了这个工作。

我改变形式下拉元件

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

不同的是,所选择的=>被调用DEF称为previous_keywords。

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的内容来自数据库,该数据库来自下拉列表。因此应该减轻风险。

相关问题