У меня есть текстовое поле ввода в моем приложении rails. Когда пользователь вставляет текст и отправляет его, контроллер проверяет таблицу записей по идентификатору, чтобы увидеть, существует ли запись или нет. Если запись не существует, новая запись помещается в таблицу. Если запись существует, она обновляется и содержит новый текстовый ввод.
Прямо сейчас, если пользователь отправляет запись, а затем редактирует и отправляет ее снова без перезагрузки страницы, создается новая запись, когда этого не должно быть. Я заметил, что если создается новая запись, ее идентификатор не будет передан контроллеру, пока страница не будет перезагружена. Это означает, что если кто-то продолжит редактировать текстовую запись и сохранять ее без перезагрузки, новая запись будет добавлена в таблицу для каждого редактирования.
Я хочу, чтобы идентификатор записи передавался клиенту сразу после его создания. Таким образом, если пользователь решил немедленно отредактировать текстовую запись, он будет отправлять идентификатор записи с текстом, таким образом редактируя существующую запись, а не создавая новую.
Это часть кода:
Контроллер:
def edit_description
@msg = ''
@entry = nil
if params[:entry][:id]==nil || params[:entry][:id]==''
@entry = Entry.new(params[:entry])
else
@entry = Entry.find(params[:entry][:id])
@entry.title = params[:entry][:title]
@entry.data = params[:entry][:data]
end
if @entry.save
@msg ='Save Successful'
else
@msg ='Trouble Saving'
end
конец
вид:
<%= form_remote_tag(
:url=>{:controller=>"details", :action=>"edit_description"}%>
<p><textarea rows="10" cols="50" name="entry[data]"><%= (h(@entry.data) unless @entry==nil)%></textarea></p>
<p>
<input type="hidden" name="entry[id]" value="<%=(@entry.id unless @entry==nil)%>"/>
<input type="submit" value="Save"/>
</p>
</form>