【问题标题】:Correct way to use Ajax with rails将 Ajax 与 rails 一起使用的正确方法
【发布时间】:2013-07-04 22:50:22
【问题描述】:

我正在尝试将 ajax 添加到投票系统,但难以使用 jQuery 定位单个元素。这是我到目前为止所拥有的:

索引操作中的投票链接

<%= link_to post_votes_path(post), :method => 'post', :remote => true do %>
<span class="score"><%= post.votes.size %></span>
<% end %>

在投票控制器中创建操作

def create
@post = Post.find(params[:post_id])
@vote = @post.votes.create

respond_to do |format|
  format.html { redirect_to root_url }
  format.js 
end
end

投票#create 视图中的 jQuery (create.js.erb)

$('.score').html("I voted"); 

问题是当我点击链接投票时,它会更改所有帖子的 html,而不仅仅是我尝试投票的帖子。对 jQuery 没有太多经验,所以我不禁认为我遗漏了一些明显的东西。有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails jquery


    【解决方案1】:

    您的所有跨度都有 .score 类。这就是改变一切的原因。

    这是一个可能的解决方案。 更改您的 html:

    <span class="score p_<%= post.id%>"><%= post.votes.size %></span>
    

    然后更改您的 create.js.erb

    $('.score.p_<%= @post.id %>').html("I voted");
    

    【讨论】:

      【解决方案2】:

      我通常只使用 JQuery 的 $.post。我正在使用 asp.net,但假设 rails 也可以使用它。

      $.post("/someurltoyouraction", {myval:val},function(data){
        // do stuff after post
      });
      

      这将产生一个 Ajax 发布请求。您可以在 {myval:val} 对象中定义您的帖子参数以满足您的要求。它本质上是一个基于键值定义的对象{key:value}

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-30
        • 2011-10-05
        • 2015-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多