【问题标题】:Rails jQuery Form Submit, Wrong Form Gets ExecutedRails jQuery 表单提交,错误的表单被执行
【发布时间】:2011-08-20 22:41:07
【问题描述】:

我正在对用户列表进行分页,并在他们的头像旁边提供一个“关注”按钮。我使用 jQuery 作为提交“关注”表单的方式。

我遇到了一个错误,即无论单击哪个“关注”链接,都会关注分页列表中的“顶部”大多数用户,而不是目标用户。

我怀疑这个错误可能与共享某些属性的分页表单有关,可能与 CSS 有关。

下面是表格:

<%= form_for(current_user.relationships.build(:followed_id => user.id), :remote => true)  do |f| %>
<div><%= f.hidden_field :followed_id %></div>
<%= link_to "Follow", "#", :onclick=>"$('.new_relationship').submit()" %>

这是关系控制器“创建”操作:

def create
  @user = User.find(params[:relationship][:followed_id])
  current_user.follow!(@user)
    respond_to do |format|
      format.html { redirect_to :back }
      format.js { }
    end
end

任何帮助将不胜感激,谢谢!

【问题讨论】:

    标签: jquery ruby-on-rails ruby-on-rails-3 pagination form-submit


    【解决方案1】:

    您可以为此使用 button_to 助手。你不需要直接处理表单和js。嗯,你可以免费获得不显眼的 js。

    &lt;%= button_to "Follow", :remote =&gt; true, :action =&gt; "create", :id_to_follow =&gt; user.id %&gt;

    如果您不想使用按钮,请使用link_to ..., :method =&gt; :post

    【讨论】:

    • 我实际上并没有将 button_to 用于苦行/设计目的。你确定 link_to :method=>:post 可行吗?查看这篇 stackflow 文章:stackoverflow.com/questions/4964599/…
    • 嗯,HTML 中链接的目的是发出获取请求,因此 :method => :post 似乎有点像黑客攻击它,另一方面,您使用 onclick 的方法是在这些方面甚至更糟。 link_to 有效,试试吧。并确保您在控制器中正确设置了路由和操作以接受传递的参数和方法。
    • 感谢您的回复,但我认为对于问题的性质可能存在误解。该代码适用于整个网站,但在分页上下文中应用时除外。 onclick 是正确的方法,因为我想使用 jQuery/CSS 和切换图像作为“按钮”。
    • 问题是你使用了 jQuery 类选择器。我假设所有表单都具有相同的 css 类,因此只提交了前一个。其次,onclick 不被认为是一个好方法,最好从你的 js 文件中绑定一个 dom 元素的点击事件。我仍然建议您使用我的方法并使用选择器从 js 和 css 文件中添加任何 js 动画和 css 样式。如果您想采用您的方法,那么您是否必须为每个表单分配唯一的 css id,以便您可以从 onclick 事件中找到正确的表单,或者您应该在选择器中使用相对路径,例如 parent(form) 或smth.
    猜你喜欢
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多