我有这样的代码在Rails视图从JS查看“在我的控制器中。此方法将更新数据库,并设置一个实例变量@newstate =“FAV”更新的Rails使用远程=真
在make_fav.js.erb我可以看到,这个实例变量被设置
<% puts "Newstate is #{@newstate}" %>
在我index.html.erb
,我有
<td id='<%= "favourite-#{product.id}" %>' >
<% if current_user.products.exists?(product.id) %>
<i class="fa fa-star" %></i>
<% else %>
<i class="fa fa-star-o" %></i>
<% end %>
</td>
现在我应该如何(在make_fav.js.erb)更新ID的TD “最爱 - #{} product.id”,以反映@newstate变量?
我曾尝试之类的东西
<% @key = "#favourite-#{@product.id}" %>
<% x = "<i class='fa fa-star' id='favourite-#{@product.id}></i>" %>
$('<%= @key %>').html("<%= escape_javascript (x) %>");
但你可以看到,我在当它涉及到JavaScript中的损失......
基本上,我要更新的内容
<i class="fa fa-star" %></i>
如果@newstate是 “我的最爱”,以及其他
<i class="fa fa-star-o" %></i>
我觉得我很近,但会很感激任何帮助!
此外,如果有更好的/更“高尚的”做法,我想听听它。
谢谢!我对js/jquery的经验不足让我忘记了addClass/removeClass角度! –
而且,具体来说,在index.html.erb中,我对产品进行循环,并根据“current_user.products.exists?(product.id)”设置类,但我在Ruby代码中执行此操作,并且不是JS。为了避免重复,是否有任何方法可以使用相同的代码进行初始更新(现在是以红宝石形式呈现的服务器)以及客户端中的JS回调代码?我正在考虑编写一个可以被两个人使用的JS函数,但它不知何故感觉我正在过度使用它,然后...... –