【问题标题】:Ruby on rails button that switches state back and forth with ajax使用 ajax 来回切换状态的 Ruby on rails 按钮
【发布时间】:2013-01-12 09:15:17
【问题描述】:

我对 Rails 很陌生,我正在尝试使用两个部分 form_for 按钮,通过 ajax replaceWith 在单击时来回切换。

我的目标是有一个关注按钮,单击该按钮会切换为“取消关注”,并切换底层按钮操作。第一个开关效果很好(我可以在数据库中看到它经过),但是当我单击新制作的“取消关注”按钮时,不会出现相同的想法(切换到“关注”),而是打印文本我的 .js.erb 文件(但是我可以看到取消关注操作已提交到数据库)。基本上在第二次单击时不会发生正确的渲染,我很不确定为什么。

我将在下面发布一些代码,如果这不是一个好问题,我很抱歉,我在理解很多 Ajax 方法时遇到了一些麻烦。

非常感谢! 丽莎

_unfollow.html.erb

<%= form_for(@user,:remote => true,method: :delete, format: 'js') do |f| %>
<%= f.submit "Unfollow", class: "btn btn-large", id: "Submit"%>
<% end %>

_follow.html.erb

<%= form_for(@user, :remote=>true,      format: 'js') do |f| %>
<%= f.submit "Follow", class: "btn btn-large btn-primary", id: "Submit" %>
<% end %>

控制器调用的创建/销毁(我希望它们在上面的两个部分之间切换)

create.js.erb

$('#Submit').replaceWith("<%= escape_javascript(raw render :partial => 'follow' )%>");

destroy.js.erb

$('#Submit').replaceWith("<%= escape_javascript(render( :partial => 'unfollow')) %>");

同样,无论我最初在页面上使用哪个部分/表单,第一次点击正确切换,第二次点击 .js.erb 并将其打印出页面(插入 html)

【问题讨论】:

  • 你能把表格放在表格里吗?你能用 firebug 看看生成的 dom 吗?而且 - 为什么对 create.js 进行“原始”调用?我认为没有必要。

标签: ruby-on-rails ajax


【解决方案1】:

尝试替换整个表单而不是只替换提交按钮,如下所示:

_unfollow.html.erb

<%= form_for(@user,:remote => true,method: :delete, format: 'js', html: { id: "button-form" }) do |f| %>
  <%= f.submit "Unfollow", class: "btn btn-large" %>
<% end %>

_follow.html.erb

<%= form_for(@user, :remote=>true, format: 'js', html: { id: "button-form" }) do |f| %>
  <%= f.submit "Follow", class: "btn btn-large btn-primary" %>
<% end %>

create.js.erb

$('#button-form').replaceWith("<%= escape_javascript(render :partial => 'follow' )%>");

destroy.js.erb

$('#button-form').replaceWith("<%= escape_javascript(render( :partial => 'unfollow')) %>");

【讨论】:

  • 忽略我之前的回复,对不起,这很好用!!非常感谢你抓住这个。
【解决方案2】:

尝试删除 create.js.erb 中的 raw 调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    相关资源
    最近更新 更多