Я использую плагин jQuery Form с моим приложением Rails. У меня есть такая форма:
<form action="/comments" id="comment_form" method="post">
<textarea cols="60" id="comment_comment" name="comment[comment]" rows="3"></textarea>
<input id="comment_submit" name="commit" type="submit" value="Add comment" />
</form>
Мой файл application.js имеет:
jQuery.ajaxSetup({
'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")}
});
$(document).ready(function(){
$("#comment_form").ajaxForm();
});
Контроллер Мои комментарии выглядит так:
def create
@comment = Comment.new(params[:comment])
respond_to do |wants|
if @comment.save
flash[:notice] = 'Added comment.'
wants.js
end
end
end
И у меня есть некоторый код jquery в /views/comments/create.js.erb, например:
$("#comment_form).hide();
и некоторые другие вещи.
Моя проблема в том, что jQuery-код внутри create.js.erb никогда не происходит (то есть форма не скрывается). Если я использую это в application.js вместо этого (спасибо Railscast за этот код)
jQuery.fn.submitWithAjax = function() {
this.submit(function() {
$.post(this.action, $(this).serialize(), null, "script");
return false;
})
return this;
};
jQuery.ajaxSetup({
'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")}
});
$(document).ready(function(){
$("#comment_form").submitWithAjax();
});
все работает нормально. Весь код в create.js.erb прекрасно работает! Я бы предпочел использовать плагин jQuery Form, но я не понимаю, как заставить работать код create.js.erb. Если сделать что-то вроде:
$("#comment_form").ajaxForm({success: function(){$("comment_form").hide()}});
тогда этот код jQuery работает. Но мне нужно запустить шаблон erb (потому что я делаю такие вещи, как рендеринг частичного внутри).
Спасибо за любые идеи.