将控制器操作处理为 JS 而不是 HTML

2024-06-19

所以我有以下形式:

<%= form_tag url_for(:controller => 'profile', :action => 'follow_topic'), :remote => true do %>
  <%= hidden_field_tag :topic_id, topic_id %>
  <%= content_tag :button, :class => 'link', :onclick => "javascript:document.getElementById('followtopic#{Topic.find(topic_id).identifier}').innerHTML='Following...'" do %> Follow <% end %>
<% end %>

我试图让控制器将其作为 JS 而不是 HTML 进行处理。有趣的是,我在应用程序的另一个地方有一个与此完全相同的表单,它似乎工作正常,并且控制器定义是相同的。不太能弄清楚问题所在。关于我应该首先检查什么有什么想法吗?

def follow_topic
  @topic = Topic.find(params[:topic_id])
  current_user.follows << @topic
  respond_to do |format|
    format.js
  end
end

你做对了,只是你的 format.js 没有做任何事情。您对提交的表单有何期望?您期望得到什么回报? json 或 http 响应 200?

在 format.js 中指定,如下所示:

...
respond_to do |format|
  format.js { render :nothing => true, :response => :ok if current_user.follows << @topic  } 
end
...

或类似的东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将控制器操作处理为 JS 而不是 HTML 的相关文章

随机推荐