У меня есть модель комментария, для которой я хочу, чтобы люди могли сохранять черновики. Он имеет логический атрибут «черновик», который позволяет сохранить комментарий (но пока не отображать его). Я создаю функцию автосохранения для этих комментариев.
Текущая форма комментария работает следующим образом: переменная @comment инициализируется контроллером как @comment = Comment.new. Тогда форма для комментария:
<%= form_for @comment, :remote => true do |f| %>
<%= f.text_area :title, :class => "inputform" %>
<%= f.text_area :content, :class =>"inputform" %>
<%= f.submit "Submit", :class => "button" %>
<% end %>
Итак, как я уже сказал, я хочу, чтобы это сохранялось автоматически. Чтобы начать это делать, я написал этот файл autosave_comments.js:
$(document).ready(function(){
setInterval(function() {
$('new_comment .temp').html('<input type="hidden" name="comment[draft]" id="comment_draft" value="true" />');
$('#comment_form form[data-remote]').submit();
$('new_comment .temp').html('');
}, 10000);
});
Этот код устанавливает ввод для черновика в значение true, отправляет форму, а затем удаляет этот ввод для черновика. Этот код отлично работает, поскольку он отправляет форму и сохраняет черновик в контроллере. ОДНАКО при каждом представлении сохраняется новая запись (т.е. каждые 10 секунд новый комментарий сохраняется в базе данных как черновик), а не обновляется первая запись.
И последнее немного предыстории: когда форма отправляется контроллеру комментариев, она подчиняется действию создания:
def create
@comment = params[:comment]
if @post.save
if params[:draft]
flash.now[:notice] = "draft autosaved"
else
flash.now[:success] = "comment created"
end
else
#code to output errors
end
respond_to do |format|
format.html
format.js
end
end
Затем это ссылается на файл create.js.erb:
<% post = user.posts.last %>
<% if post.draft == false %>
//code here deals with a true submission of a comment, to append tables etc.
<% else %>
//maybe some code here could alter the form on draft submission to make it update the same post next time?
<% end %>
Итак, мне интересно, я хотел бы, чтобы первый черновой вариант работал так же, как и создать запись в таблице комментариев. НО затем я хочу, чтобы форма обновляла этот комментарий при последующих автосохранениях и сохраняла комментарий как окончательный комментарий без черновика, когда человек отправляет комментарий для публикации. Есть ли в одном из этих файлов место, где я могу это сделать?
Спасибо!