我的这个表单有remote:true
<div id="new_review"></div>
<%= form_for @feedback, remote: true do |f| %>
<%= f.text_area(:comment)" %>
<%= f.submit("Submit") %>
<%end%>
使用ajax
进入此控制器def create
@feedback = Feedback.new(feedback_params)
respond_to do |format|
@feedback.save
format.html {}
format.js {}
end
end
我在feedbacks文件夹
中创建了一个文件 create.js.erb$("#new_review").append("<h1>lallalalalala</h1>");
alert('js was called!');
在服务器端,请求通过控制器,甚至渲染create.js.erb - 但没有发生任何事情。
Started POST "/feedbacks" for ::1 at 2016-03-04 18:43:29 +0100
Processing by FeedbacksController#create as JS
Parameters: {"utf8"=>"✓", "feedback"=>{"comment"=>"dasd"}, "commit"=>"Submit"}
(0.1ms) BEGIN
SQL (0.3ms) INSERT INTO "feedbacks" ("comment", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["comment", "dasd"], ["created_at", "2016-03-04 17:43:29.277992"], ["updated_at", "2016-03-04 17:43:29.277992"]]
(6.0ms) COMMIT
Rendered feedbacks/create.js.erb within layouts/application (0.1ms)
Rendered layouts/_head.slim (31.2ms)
Rendered layouts/_navbar.html.erb (0.1ms)
Rendered layouts/_errors.slim (0.3ms)
Rendered layouts/_footer.html.erb (0.1ms)
Completed 200 OK in 58ms (Views: 48.9ms | ActiveRecord: 6.4ms)
的application.js
//= require jquery
//= require jquery_ujs
//= require turbolinks
我一整天都在谷歌搜索,正在观看教程但却无法正常工作。我在application.js中尝试了$ .ajaxSetup和一些ajax请求,但没有运气。
它是如何工作的?非常感谢ajax,js或任何提示的一些很棒的教程。谢谢。
谢谢,
答案 0 :(得分:1)
我找到了问题here的答案。
我通过添加以下行在我的控制器响应format.js中用一行代码解决了这个问题:{render layout: false}
另一个解决方案可能是在您的form_for中添加data: {type: "script"}
,但就我而言,它没有用。
工作控制器如下所示:
def create
@feedback = Feedback.new(feedback_params)
respond_to do |format|
@feedback.save
format.html {}
format.js {render layout: false}
end
end
感谢大家的参与。
答案 1 :(得分:0)
respond_to do |format|
@feedback.save
format.html {}
format.js {}
end
到这个
respond_to :js