2

我有一个链接列表,单击时我希望它通过 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 %>

但是用什么作为参数呢?

任何人都有任何想法,有点卡在这里

4

3 回答 3

3

尝试将您的链接更改为如下所示:

<%= link_to 'Tynewydd', posts_path(:type => 'Tynewydd'), :remote => true %>

然后在你的index.js.erb

<% if params[:type] == 'Tynewydd' %>
  $('#newsResults').html('<%= escape_javascript(render partial: 'tynewyddposts') %>');
<% end %>
于 2013-02-10T20:42:33.893 回答
2

我建议使用单个参数键(如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 %>
于 2013-02-10T20:43:39.010 回答
1

您可以link_to像这样传递值:

  <li><%= link_to 'Sandpiper', select_partial_path(option: "other_partial") %></li>

这将在您的控制器操作中为您提供一个:option符号。select_partial由您决定如何使用它来选择部分进行渲染。

于 2013-02-10T20:43:30.927 回答