我有以下代码:
comment.js.erb
alert("Alert");
的application.js
jQuery.ajaxSetup({
'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")}
})
jQuery.fn.submitWithAjax = function() {
this.submit(function() {
$.post(this.action, $(this).serialize(), null, "script");
return false;
})
return this;
};
$(document).ready(function() {
$(".comment_form").submitWithAjax();
})
查看表单:
<% form_for :comment, :url => comment_task_path(tasks.id),
:html => {:remote => true,
:class => "comment_form"} do |f|-%>
<%= f.text_field :remark, :placeholder => "Add Comments", :rows => 2,
:class => 'box',
:style => "width: 834px; height: 40px;"%>
<%= f.submit "Comment"%>
<% end -%>
控制器方法:
def comment
@comment = Comment.new(params[:comment])
@comment.user_id = @current_user.id
@task.comments << @comment
flash[:notice] = "thank you"
if @comment.save
# what code do I put here to render comment.js.erb?
else
end
end
如果我希望comment
方法呈现我的comment.js.erb,我需要输入什么代码?
我尝试了render to
和respond to
,但仍然无法运行。
答案 0 :(得分:0)
您需要在插件中传递FORM
作为参数。
jQuery.fn.submitWithAjax = function(elem, options, arg) {
答案 1 :(得分:0)
无需显式呈现 comment.js.erb 。默认情况下,控制器将在执行该方法后呈现 comment.js.erb 。也许你可以拥有以下代码。
评论操作中的
def comment
# ...
@comment.save
end
并在 comment.js.erb 文件中
<% if @comment.valid? %>
alert("Comment created successfully");
<% else %>
alert("Something went wrong.");
<% end %>
答案 2 :(得分:-1)
在您的路线中添加获取请求以获取comments.js.erb
获取'your_controller_name / comments',:as =&gt; '评论'
在你的控制器中只需使用comments_path