我有一个链接列表,当点击时,我希望它通过Ajax显示其相关的部分,我已经成功地呈现了第一个,但希望实现一些if语句来识别点击了哪个link_to。如何区分链接?
<ul class="nav nav-tabs">
<li><%= link_to 'Home', posts_path %></li>
<li><%= link_to 'Tynewydd', posts_path, :remote => true %></li>
<li><%= link_to 'Woodside', root_path %></li>
<li><%= link_to 'Sandpiper', root_path %></li>
<li><%= link_to 'Outreach', root_path %></li>
<li><%= link_to 'Company', root_path %></li>
<li><%= link_to 'Staff', root_path %></li>
</ul>
index.js.erb
$('#newsResults').html('<%= escape_javascript(render partial: 'tynewyddposts') %>');
我在想这个
<% if params[:tynewydd] %>
$('#newsResults').html('<%= escape_javascript(render partial: 'tynewyddposts') %>');
<% end %>
但是用什么作为参数呢?
任何人都有任何想法,有点拘泥于此
尝试将链接更改为:
<%= link_to 'Tynewydd', posts_path(:type => 'Tynewydd'), :remote => true %>
然后在你的index.js.erb
:
<% if params[:type] == 'Tynewydd' %>
$('#newsResults').html('<%= escape_javascript(render partial: 'tynewyddposts') %>');
<% end %>
我建议使用单个参数键(如view
),其值将是分部的名称。如果给定的名称未映射到分部,则应提供默认分部。它可能看起来像这样:
# methods available to controllers and helpers
def post_partials
%w[home tynewydd]
end
def root_partials
%w[woodside sandpiper outreach company staff]
end
# posts controller
@view = post_partials.detect?(params[:view]) || 'home'
# home controller
@view = root_partials.detect?(params[:view]) || 'woodside'
# view
<ul class="nav nav-tabs">
<li><%= link_to 'Home', posts_path(:view => 'home') %></li>
<li><%= link_to 'Tynewydd', posts_path(:view => 'tynewydd', :remote => true %></li>
<% root_partials.each do |partial| %>
<li><%= link_to partial.titelize, root_path(:view => partial) %></li>
<% end %>
</ul>
<%= render @view %>
您可以通过link_to
传递值,如下所示:
<li><%= link_to 'Sandpiper', select_partial_path(option: "other_partial") %></li>
这将在控制器的select_partial
动作中给您一个:option
符号。如何使用它来选择要渲染的部分取决于您。