Я пытаюсь установить файлы cookie для пользователей, которые не вошли в действие по созданию формы. После того, как не авторизованные пользователи подтвердили отправку, они перенаправляются к действию входа / регистрации, где они затем возвращаются на страницу, на которой они были ранее, и форма автоматически заполняется их ранее введенной информацией.
Я успешно добавил файлы cookie, и они сохраняются, но они возвращают странный строковый объект.
"{\"1\"=>\"This is a test answer\"}" # 1 is the question_id and 'This is a test answer' is the answer_text
Вот действие создания, где я устанавливаю куки:
def create
store_location
if current_user.nil?
cookies[:answer_entry] = { :value => params[:answers] }
# raise p cookies[:answer_entry].inspect
deny_access
else
params[:answers].each do |question_id, answer_text|
next if answer_text.blank?
question = Question.find(question_id)
question.answers.create!(:answer => answer_text, :user_id => current_user )
raise p question.answer
redirect_to book_questions_path(@book), :notice => "You have successfully submitted your Answer, please answer more!"
end
end
end
Затем я сохраняю куки-файлы в переменной экземпляра в действии show (там, где появляется форма), а затем передаю переменную в качестве значения в форме:
def show
@book = Book.find(params[:book_id])
@question = @book.questions.find(params[:id])
if user_signed_in?
@answer = cookies[:answer_entry]
else
cookies[:answer_entry] = nil
end
end
И
<%= form_for(:answer, :url => book_question_answers_path(@book, @question)) do |f| %>
<%= text_area_tag "answers[#{@question.id}]", @answer%>
<%= f.hidden_field :user_id, :value => @current_user %>
<%= submit_tag("Submit") %>
<% end %>
И из этого я получаю эту странную строку, автоматически заполняющую поле формы.
У меня два вопроса:
- Я понимаю, что это строка "{\" 1 \ "=> \" Это тестовый ответ \ "}" Но кто-то может объяснить, почему внутри хеша и почему экранируются двойные кавычки?
- Я хочу отобразить ТОЛЬКО answer_text («это тестовый ответ») в поле формы, может кто-нибудь указать мне правильное направление, чтобы решить эту проблему? Должен ли я разделить строку и переназначить ее как хеш, а затем вызвать параметры: answer_text?
Я ценю любую помощь.
Спасибо!