所以我有以下表格:
<%= 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
答案 0 :(得分:0)
除非你的format.js没有做任何事情,你说得对。您在表单中提出的期望是什么?你还期待什么呢?一个json或http响应200?
在你的format.js中指定如下:
...
respond_to do |format|
format.js { render :nothing => true, :response => :ok if current_user.follows << @topic }
end
...
或者那种效果。
答案 1 :(得分:0)
这个问题是老问题,但是没有答案,我只是在几个小时内遇到同样的问题,所以希望这将有助于将来。
确保app/assets/javascripts/application.js
包含:
//= require jquery
//= require jquery_ujs
该erb包含<%= javascript_include_tag "jquery", "jquery_ujs" %>
而不仅仅是<script>
代码。
这就是为我解决的问题。