2

このようなものが必要ですが、Ruby On Railsで。削除または分析する特定のファイルを選択するコードがあります。

<% if @files%>    
<%= form_tag what_to_do_files_path, method: :get do %>
<%= submit_tag "Delete selected", :name => 'delete' %>
<%= submit_tag "Analyse", :name => 'analyse' %>
  <% @files.each do |file| %>
    <% if (arraydb.file=="no") %>
        <p><td> <%= check_box_tag "files[]", file.id %></td><%= file.name %></p>       

    <% else %>      

    <div class="my_profile_info">     
    <p><td> <%= check_box_tag "files[]", file.id %></td> <%= file.name %></p>        

    <td class="Info">
    <a href="<%=file.info%>" target ="_blank" class= "btn btn-mini btn-info">Info</a>  
    </td>  

     </div>

    <% end %>
  <%end%>
<%end%> 
<%else%>
<%end%>

ルート:

resources :files do
      collection do             
        get :what_to_do      
      end
    end

コントローラ:

def what_to_do
  method=params[:commit]
    if method == 'Delete selected'
     do smt

   elsif  method == 'Analyze'
     do another thing
   end
end

私が持っている必要があるのは、「分析」ボタンのオプションです。Pictures、Info、Normalization、Scatterplots と同様に、チェックボックスがあります。そこで、Pictures and Normalization を選択し、[Analyse] をクリックすると、これら 2 つのオプションのみが続行されます。チェックボックスをsubmit_tagにラップする方法がよくわかりません。

編集


オプションの選択例(チェックボックス)

  • 正規化
  • ピック
  • 散布図
  • 情報

ファイルを選択 (チェックボックス):

  • ファイル1
  • ファイル2
  • ファイル3
4

5 に答える 5

0

Firebug/Chrome インスペクタを開いて、チェックボックスのデモで選択が行われた後に何が起こるかを確認すると、GET リクエストが行われ、選択されたチェックボックスの値がサーバーに渡されることがわかります。それはまさにあなたが実装できるものです。

選択したチェックボックスの値をサーバーに渡し、その値に基づいてサーバー上の処理を行います。コントローラーに渡されるパラメーターには、渡される値が表示されます。

先に進む際の小さな提案ですが、ファイルの詳細を提供するコードをモデルに移動できます。そうすれば、db に関連付けられていなくても (このモデル クラスで ActiveRecord を継承しないでください)、MVC の原則を順守できます。

于 2013-05-14T12:02:38.137 に答える
0

あなたの質問は次のように理解しています。

あなたが持っている

  • ファイル 1

    • 写真<--チェック
    • 情報 <-- チェック
    • 正規化
    • 散布図
  • ファイル 2

    • ピクチャー
    • 情報 <-- チェック
    • 正規化 <-- チェック
    • 散布図

最初に次のように作成して配列します

@file_options = [["Pictures", "pics"], ["Info", "info"],["Normalization", "norm"],["Scatterplots", "scat"] ]

そして、あなたの見解では、次のようなことができます:

<div class="my_profile_info">     
  <p><td> <%= check_box_tag "files[]", file.id %></td> <%= file.name %></p>
  <td> <%=select_tag "file_options[#{file.id}][]", options_for_select(@file_options), :multiple => true %></td>        
</div>

あなたのコントローラーで:

params[:files].each do |file_id|
  params[:file_options][:file_id].each do |option|
    # do something according to "pics" or "info" etc..
  end
end

注: 複数のオプションを選択するには、一部のブラウザー/OS で「ctrl」を使用する必要がある場合があります。

于 2013-05-22T09:11:34.580 に答える