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

Ruby on rails 将控制器操作处理为JS而不是HTML,ruby-on-rails,Ruby On Rails,因此,我有以下表格: <%= 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 => "javascri

因此,我有以下表格:

<%= 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 %>
'profile',:action=>'follow_topic',:remote=>true do%>
'link',:onclick=>“javascript:document.getElementById('followtopic#{Topic.find(Topic_id.identifier}')。innerHTML='Following…'”do%>Following
我试图让控制器将其作为JS而不是HTML进行处理。有趣的是,我在应用程序的另一个地方有一个与此完全相同的表单,它似乎工作得很好,并且控制器的定义是相同的。我不太明白这个问题。关于我应该先检查什么有什么想法吗

def follow_topic
  @topic = Topic.find(params[:topic_id])
  current_user.follows << @topic
  respond_to do |format|
    format.js
  end
end
def follow\u主题
@topic=topic.find(参数[:topic\u id])

当前的_user.follows你做对了,只是你的format.js没有做任何事情。您希望在提交的表格中看到什么?你期望得到什么回报?json或http响应200

在format.js中指定如下内容:

...
respond_to do |format|
  format.js { render :nothing => true, :response => :ok if current_user.follows << @topic  } 
end
...
。。。
回应待办事项|格式|

format.js{render:nothing=>true,:response=>:ok如果当前的_user.follows这个问题很老了,但没有答案,我只是在几个小时内与同一个问题作斗争,所以希望这将对将来的人有所帮助

确保
app/assets/javascripts/application.js
包含:

//= require jquery
//= require jquery_ujs 
erb包含
,而不仅仅是
标签


这就是我修复它的原因。

我添加了render:nothing=>true,:response=>:好的,它仍然被处理为HTML,并将页面重定向到/profile/follow_topic。如果你将
format.js
留空,它应该呈现一个javascript模板。在这种情况下,
follow_topic.js.erb
。嗯,那么这篇文章有问题。在你的原木它说什么?类似于:在Mon Aug 08 12:13:29+0800?2011处理你的控制器作为HTML的动作?还是作为JS?它说控制器HTMLFor的动作作为任何人来这里的~~~处理-强烈地考虑通过线发送HTML,并使用像刺激JS之类的东西来处理在何处/何时/如何ld可以集成到DOM中。