0

所以我只是想做一些简单的事情,但我似乎无法在我的书中找到任何类型的解决方案或轻松地在谷歌上搜索它。

<div id="subscribe">
<% if session[:read_random]
    unless is_subscribed?(session[:read_random].last)%>
            <%= link_to 'Subscribe', subscriptions_path(feed_id: session[:read_random].last), method: :post, remote: :true %>

    <% else %>
        <%= link_to 'Unsubscribe', subscriptions_path(feed_id: session[:read_random].last), method: :delete, remote: :true %>

<%  end
   end %>
</div>

我的 create.js.erb 是:

if is_subscribed?(session[:read].last)
    $('#subscribe').html("Unsubscribe");
else
    $('#subscribe').html("Subscribe");
end

所以我知道这段代码显然是错误的,请告诉我我在这里做错了什么,如果他没有订阅,我想给用户订阅的选项,反之亦然。

我是否需要将 link_to 放在 jQuery 语句的 html 部分中?唯一的问题是,虽然我会尝试这个看看它是否有效,但我什至没有从 ajax 调用中获得任何更新的文本。服务器说它已经渲染了订阅/create.js.erb 并且数据库正在适当地更新

4

2 回答 2

0

感觉是控制器有问题。也许我们可以看到控制器......如果你使用 webkit 工具的 Firebug,你会收到任何错误吗?

您的 javascript 是错误的,因为它混合了 ruby​​ 和 javascript:

<% if is_subscribed?(session[:read].last) %>
    $('#subscribe').html("Unsubscribe");
<% else %>
    $('#subscribe').html("Subscribe");
<% end %>

您的 is_subscribed 方法将更好地放置在模型中,并且它会更好地查询模型属性而不是使用会话。然而,这只是一个建议。我想is_subscribed?在助手中定义?

抱歉,我现在无法提供更多帮助

于 2012-05-13T18:08:44.170 回答
0

解决方案:在views/subscriptions/create.js.erb 和destroy.js.erb

$('#subscribe').html("<%=j link_to 'Unsubscribe', subscriptions_path(feed_id: session[:read_random].last), method: :delete, remote: :true %>");

改变为破坏,你有它!

于 2012-05-16T03:44:05.370 回答