0

ページの上部に select_tag フィールドがあり、選択したオプションを取得して、ユーザーの選択に基づいてページのコンテンツを変更しようとしています。

私は学習者であり、さまざまな情報を見つけましたが、詳細な例や、最適なアプローチと実装方法に関する適切な説明はありません。

シナリオは次のとおりです。 プロジェクトとドキュメントの間に belongs_to 関連付けがあり、ドキュメントを一覧表示するビューの 1 つで、select タグで現在選択されているプロジェクトに属するすべてのドキュメントのみを表示したいと考えています。

link_to タグを介して、指定されたプロジェクト ID のドキュメントのみを表示するドキュメント インデックス アクションに、選択したプロジェクトの ID を渡すことが頭に浮かびました。これにより、ビュー内の正しいドキュメントでページが更新されますが、それは正しい方法ではなく、select_tag のオプションとして link_to タグを使用できないと思います。誰でも助けて例を挙げてもらえますか?

4

2 に答える 2

0

コントローラーで:

def index
  if params[:project]
    @documents = Document.where(:project => params[:project]
  else
    @projects = Project.all
  end
end

フォーム/ビューで:

<%= form_tag 'projects', :method => :get do %>
  <%= options_from_collection_for_select(@projects, :id, :name)
  <%= submit_tag %>
<% end %>

<% if @documents %>
  <%= @documents.each do |d| %>
    ....
  <% end >
<% end %>
于 2012-06-26T12:40:18.273 に答える
0

次のように form.select メソッドと options_for_select を使用することをお勧めします

f.select :attribute, options_for_select(@array, default_value)

コントローラーでは、送信されたパラメーターを使用して作成または更新する必要があります

n = record.new(:attribute => params[:attribute])

楽しんで

于 2012-06-26T13:55:01.593 に答える