<% products.each do |product| %>
<article >
<header>
<% if user_signed_in? %>
<% if current_user.liked_products.include? product %>
<%= link_to "已喜欢", unlike_product_path(product), method: :delete, remote: true %>
<% else %>
<%= link_to "喜欢", like_product_path(product), method: :post, remote:true %>
<% end %>
<% end %>
</header>
</article>
<% end %>
其实本来很想把关注按钮部分提取出去,改成如下版本:
<% products.each do |product| %>
<article >
<header>
<%= render '_follow_icon', locals: {product: product} if user_signed_in? %>
</header>
</article>
<% end %>
<% if current_user.liked_products.include? product %>
<%= link_to "已喜欢", unlike_product_path(product), method: :delete, remote: true %>
<% else %>
<%= link_to "喜欢", like_product_path(product), method: :post, remote:true %>
<% end %>
但问题在于貌似怎么都无法把变量传递过去。怎么办?
注:这代码之前还有另一层嵌套,所以没有直接
<%= render product %>
用了 remote:true, 点击完关注按钮后,在 controller 处理完的,我希望_follow_icon.html.erb 部分再刷新一下就行了,不另外写 js, 可以吗?因为_follow_icon.html.erb 自己会先判断一下应该是 link_to"已喜欢"还是"喜欢".