0
Record:
  belongs_to :user
  has_one :course
  has_one :client, through: :user
  has_one :group, through: :user

レコードのインデックス アクション ページで、クライアント、グループ、およびユーザー用の collection_selects を含むフォームが必要です (フォーム、関連する collection_selects は既に作成されています) …しかし、フォームの送信ボタンを返す方法がわかりません。フィルタリングされたインデックス ページ。

フォームからスコープを呼び出す方法がわかりません。

スコープ付きのモデルの記録: GitHub リンク

_index_filter_form 部分ビュー: GitHub リンク

レコード コントローラー: GitHub リンク

4

1 に答える 1

0

もともと私はこれを私の見解として持っていました:

<td><%= collection_select(:client_id, 0, Client.find(:all, :order => "name"), :id, :name, {}, {:class=>'form-control'}) %></td>
<td><%= collection_select(:group_id, 0, Group.find(:all, :order => "name"), :id, :name, {}, {:class=>'form-control'}) %></td>
<td><%= collection_select(:user_id, 0, User.find(:all, :order => "first_name, last_name"), :id, :full_name, {}, {:class=>'form-control'}) %></td>

私は自分のパラメータを渡す方法を見て戻ってきました...そして上記のコードを修正しました:

<!-- collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {}) -->
<td><%= collection_select(:client, :id, Client.find(:all, :order => "name"), :id, :name, {}, {:class=>'form-control'}) %></td>
<td><%= collection_select(:group, :id, Group.find(:all, :order => "name"), :id, :name, {}, {:class=>'form-control'}) %></td>
<td><%= collection_select(:user, :id, User.find(:all, :order => "first_name, last_name"), :id, :full_name, {:multiple => true, :size => 5}, {:class=>'form-control'}) %></td>

これで、フォーム送信後にコントローラーの index アクションを介してパラメーターにアクセスできるようになりました。

def index
    @records = Record.all
    if params[:commit] == "Filter"
      @records.by_client(params[:client_id]).by_group(params[:group_id]).by_user(params[:user_id])
    end
end

by_client、by_group、および by_user は、レコード モデルにある名前付きスコープです。

于 2013-10-05T18:31:00.093 に答える