2016-12-06 13 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はデータベースに選択されている選択肢を事前に選択します。

項目があらかじめ選択されていても、ユーザーがControlキーを押しながら項目をクリックすると、あらかじめ選択されている項目が失われるという点では、「Gotcha」が表示されます。

--------更新が-----------

フォーム

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

のために私はこの作業を得ました。

Iは

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

に差を形成するドロップダウン要素を変更は、=>選択は、DEFと呼ばprevious_keywordsを呼び出すことです。

previous_keywords ---------------------------------私のコントローラであると

のように見える# -------前のキーワード----------------------------------------- ----- #これは、ベッドシートに既に入力されたキーワードを取得するように設計されています。これは、ベッドシートのレコードが #で編集されている場合、レコードが編集されるとキーワードが選択されるようになっています。 # #注 - 評価関数は危険です。しかし、これは内部アプリケーションであり、入力は #aの選択ボックスから来ているので、リスクは許容可能でなければなりません。

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へのフィードはドロップダウンリストからのデータベースからのものです。したがって、リスクを軽減する必要があります。

関連する問題