私のアプリでは、クライアントには多くのサイトがあり、ルートとコントローラはクライアントの下にネストされており、すべて表示ページ(下のコード)に表示されます。Rails 4 - 親のネストされたリソースを使用したRansackの使用
私が達成しようとしているのは、ユーザーが関連するサイトを検索できるように、Ransack検索フォームとソートリンクをクライアントのページに表示することです。
現在、クライアントに関連付けられているサイトを作成すると、サイトに関連付けられているクライアントに関係なく、すべてのクライアントですべてのサイトが表示されます。
私のルート:
resources :clients, controller: 'clients' do
resources :sites, controller: 'clients/sites', except: [:index]
end
クライアントコントローラ/ showアクション
class ClientsController < ApplicationController
def show
@client = Client.find(params[:id])
@q = Site.ransack(params[:q])
@sites = @q.result(distinct: true).page(params[:page]).per(5)
end
end
マイモデル:
class Client < ApplicationRecord
has_many :sites, dependent: :destroy
end
class Site < ApplicationRecord
belongs_to :client
end
マイ検索フォームおよびクライアント/ショー[上のリンクを並べ替えます。id ]ページ
<%= search_form_for @q do |f| %>
<%= f.search_field :site_ident_or_site_name_cont, :class => 'form-control', :placeholder => 'search client...' %>
<% end %>
<%= sort_link(@q, :site_name, 'Site Name') %>
私がしたいのは、表示されているクライアントに関連付けられているサイトだけを検索することです。ここでの援助は非常に高く評価されます。
を固定しましたそれで、{NoMethodError at/clients/1 のための未定義のメソッド 'sites_path 'は#<#Class:0x007f863be58a58>:0x007f863ca6adc8> でしたか?平均? asset_path} –
これでわかりました!あなたの投稿は、検索フォームにもいくつかの変更が加えられなければならないということになってしまった。ご協力いただきありがとうございます! –