2

クリックしたときに関連する部分を Ajax 経由で表示したいリンクのリストがあります。最初のリンクは正常にレンダリングされましたが、どの link_to がクリックされたかを認識するためにいくつかの if ステートメントを実装したいと考えています。リンクを区別するにはどうすればよいですか?

<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 に答える