【问题标题】:Ruby on rails. Ajax, jquery affecting all of same class in partial红宝石在铁轨上。 Ajax,jquery部分影响所有相同的类
【发布时间】:2016-04-21 05:23:56
【问题描述】:

我是 jquery 的新手,但我正在尝试将 ajax 内容添加到我的 rails 应用程序中。我正在渲染一个部分,它显示了一个用户列表和一个链接来评价他们旁边的每个用户。当我单击链接时,表单成功呈现并提交等等,但我遇到的问题是表单呈现在类的每个实例上。 我已经搜索并尝试使用 $(this) 但这似乎破坏了一切(没有渲染)。

在部分中多次渲染的链接:

<td> <%= link_to 'Click here to rate this user', new_user_review_path(:user_id => request.gig.user.id, :gigid => request.gig.id), class: "new-review", remote: true %> </td>

jquery:

$('.new-review').hide().after('<%= j render("form") %>')

(隐藏所有 .new-review 实例,并为每个用户显示表单)

我通过搜索尝试了各种方法(都没有奏效);

$(this).find('.new-review').hide().after('<%= j render("form") %>')

$(this)('.new-review').hide().after('<%= j render("form") %>')

$(".new-review").click(function(){
    $(this).find('.new-review').hide().after('<%= j render("form") %>');
});

$('.new-review', this).hide().after('<%= j render("form") %>')

任何提示将不胜感激,谢谢!

【问题讨论】:

    标签: jquery ruby-on-rails ajax this partials


    【解决方案1】:

    据我了解,问题在于所有链接都有一个类“.new-review”,因此 jQuery 不使用您需要的类,而是使用它们。不知何故,您需要分离链接。我建议使用这个来改变一个类:

    #{@user.id}
    

    在你的情况下,它会是这样的:

    <td> <%= link_to 'Click here to rate this user', new_user_review_path(:user_id => request.gig.user.id, :gigid => request.gig.id), class: "new-review-#{@user.id}", remote: true %> </td>
    

    对于 jQuery,您需要像这样更改它:

    $('.new-review-<%= @user.id %>').hide().after('<%= j render("form") %>')
    

    不确定我是否正确理解了这个问题,但我希望这会有所帮助或提供任何提示。

    【讨论】:

    • 你完全理解了这个问题!感谢您的回复,到目前为止,我已成功更改类以包含用户 ID,但 jquery 响应为 500 内部错误。
    • 您是否尝试使用“request.gig.user.id”而不是“@user.id”?
    • 我正在使用 class: "new-review-#{request.user.id}" ,它正确地给了它一个唯一的 ID。然后我使用 $('.new-review-') 但这会引发 500 内部错误。
    • 如果类名中有数字,jquery 似乎不起作用。如果我手动将 id 设置为例如。 20,加上$('.new-review20,不行。
    • 这基本上是正确的。我安装了 firebug 并查看了我应该能够纠正的 jquery 错误。错误与答案无关。感谢您的帮助。
    猜你喜欢
    • 2011-07-13
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    相关资源
    最近更新 更多