Rails - Попытка установить куки из Create Action - PullRequest
0 голосов
/ 23 октября 2011

Я пытаюсь установить файлы 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. Я понимаю, что это строка "{\" 1 \ "=> \" Это тестовый ответ \ "}" Но кто-то может объяснить, почему внутри хеша и почему экранируются двойные кавычки?
  2. Я хочу отобразить ТОЛЬКО answer_text («это тестовый ответ») в поле формы, может кто-нибудь указать мне правильное направление, чтобы решить эту проблему? Должен ли я разделить строку и переназначить ее как хеш, а затем вызвать параметры: answer_text?

Я ценю любую помощь.

Спасибо!

1 Ответ

0 голосов
/ 23 октября 2011

Вы сохраняете хеш в куки [: answer_entry], поэтому, когда вы извлекаете его и сохраняете в переменной экземпляра @answer, вы получаете хеш, и когда вы используете его в text_area_tag, он отображается в виде строки.

Есть несколько способов решить эту проблему

Путь один

В действии создания назначьте куки [: answer_entry] следующим образом

cookies[:answer_entry] = params[:answers]

Way Two

В действии show получить значение из файлов cookie [: answer_entry] следующим образом

@answer = cookies[:answer_entry][:value]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...