【问题标题】:Rails, AJAX: Render new link_to depending on previously clicked linkRails,AJAX:根据先前单击的链接呈现新的 link_to
【发布时间】:2012-05-13 06:39:40
【问题描述】:

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

<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 并且数据库正在适当地更新

【问题讨论】:

    标签: javascript ruby-on-rails ajax ruby-on-rails-3 jquery


    【解决方案1】:

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

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

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

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

    抱歉,我现在帮不上忙

    【讨论】:

      【解决方案2】:

      解决方案:在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 %>");
      

      alter for destroy 就是这样!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-02
        • 1970-01-01
        • 2020-02-14
        • 2015-12-12
        • 2013-07-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多