渲染部分取决于单击的链接



我有一个链接列表,当点击时,我希望它通过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符号。如何使用它来选择要渲染的部分取决于您。

相关内容

  • 没有找到相关文章

最新更新