私はジョブリストを持つジョブインデックスページを持っています。ユーザーがスコープを使用して「経験」などの基準の種類に基づいて結果を限定する「フィルタ」があります。Rails:スコープデータをインデックスから永続化してページを表示する
ユーザーがジョブに表示されるインデックスページのジョブをクリックすると私はブレッドクラムを持っているページ。そのパンのクラムをクリックしてジョブのインデックスページに戻ると、スコープで設定されたすべてのフィルタが消去されます。
ユーザは、1)インデックスに検索フィルタを設定すること2)検索結果をトリミングすること3)ジョブ表示ページへのリンクをクリックすること4)パンくずリストのナビゲーションをクリックすることジョブのインデックスページを開き、すべてのスコープを適用します。私は1-3の仕事をしていますが、今は#4を理解できません。
クリックしてインデックスページからそのスコープデータを保持する方法がわかりません。私はそれを格納することができます私はインデックスページに戻って行くとき私はパラメータとして渡すことができると思いますか?
仕事の私のナビゲーションブレッドクラムは、モデル
indexアクション# scopes
if params[:experience].present?
@jobs = @jobs.by_experience(params[:experience])
end
の一部であるコントローラにスコープを呼び出す
scope :by_experience, -> (ex) { where(experience: ex) if ex.present? }
で
<nav aria-label="breadcrumb" role="navigation">
<ol class="breadcrumb">
<li class="breadcrumb-item"><%= link_to "Search Results", filtered_jobs_path(experience: params[:experience]) %></li>
<li class="breadcrumb-item active" aria-current="page">Job Details</li>
</ol>
</nav>
<% if params[:experience].present? %>
<%= 'test' %>
<% end %>
私の範囲のページを表示しますジョブ名をリストするjobs index partial
<div class="jobs_index_middle_panels col-md-6">
<!-- displays error message if search term can't be found, ignores nil values -->
<% filter_array = [ params[:experience],
params[:num_days_past], params[:company], params[:search], params[:l] ].compact %>
<% if @jobs.present? %>
<!--kaminari gem helper method-->
<h5 class="text1"><%= page_entries_info @jobs, entry_name: 'job' %></h5>
<% else %>
<h5 class="text1">No jobs found. Try removing the following filters:
<span class="text-danger"><%= filter_array.join(", ") %></span></h5>
<% end %>
<% @jobs.each do |job| %>
<div class="card">
<div class="card-block">
<h4 class="vert-spacing2"><%= link_to job.title, job_url(job.id), class: "text-danger" %></h4>
<div class="vert-spacing1"><%= job.company %></div>
<div class="vert-spacing1"><%= truncate(job.description, length: 200, separator: ' ') %></div>
<b><%= job.city.capitalize %>, <%= job.state %></b>
<span class="pull-right"><%= time_ago_in_words(job.created_at) + " ago" %></span>
<%= number_to_currency(job.salary) %>
</div>
</div><br>
<% end %><!--./jobs-->
<!--pagination: uses kaminari gem -->
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center">
<%= paginate @jobs %>
</ul>
</nav>
</div><!--./jobs_index_middle_panels-->
興味深い。私はそれをユーザーのサインインの有無にかかわらず動作させる必要があります。だから私はあなたの提案を使うことができるとは思わない。 – Scott
その場合、Paramsを一意に指定し、あなたのlink_toで前後に渡します。 foo_bar_path(my_param1:param1、my_param2:param2 ...)それはたくさんのハードコーディングですが、うまくいくでしょう。 –
あなたのショーコンテンツをモーダルでレンダリングして、ユーザーが実際にインデックスページを離れないようにしてください。 –