Параметры Rails содержат обратную косую черту - PullRequest
0 голосов
/ 28 декабря 2018

В настоящее время я работаю с button_tag, чтобы создать тест для отправки ответов в удаленном стиле.При нажатии этой кнопки вместо публикации новой записи выдается ошибка.

ActiveRecord::RecordNotFound (Couldn't find Answer without an ID):

При просмотре журналов сервера я вижу, что он пытается работать с этими параметрами, когдапытаюсь опубликовать Parameters: {"{\"answer_id\":59}"=>nil, "id"=>"15"}

Что я ищу или ожидаю увидеть, так это.Parameters: {"answer_id"=>"59", "id"=>"15"}

Вот button_tag, который я использую.

<% @question.answers.each do |answer| %>
  <%= button_tag "#{answer.answer.titleize}", class: 'btn btn-block btn-lg btn-primary', data: {
    remote: true,
    method: :post,
    url:    answer_question_path(@question),
    params: { answer_id: answer.id }
  } %>
<% end %>

Вот мой контроллер ответа, который отвечает за отправку запроса POST.

class ResponsesController < ApplicationController
    def answer
        question = Question.find(params[:id])
        answer   = question.answers.find(params[:answer_id])
        response = question.responses.find_or_initialize_by(user: current_user)

        if response.update(answer: answer)
            head :ok
        else
            puts 'Something went wrong chief' 
        end
    end

    private

    def responses_params
        params.require(:response).permit(:user_id, :question_id, :answer_id)
    end
end

Я попытался использовать to_json для параметра безуспешно и не смог найти никакого решения в другом месте на SO или других форумах.Есть идеи?

1 Ответ

0 голосов
/ 30 декабря 2018

Кажется, это проблема с button_tag в функции, для которой я ее использую.

button_tag создает элемент кнопки, который определяет кнопку отправки, кнопку сброса или общую кнопку, которую можно использовать в JavaScript.button_tag также является помощником вида действия, но определяется как FormTagHelper.

button_to создает форму, содержащую одну кнопку, которая отправляет URL-адрес, созданный набором параметров.button_to - это UrlHelper, а button_tag - это ViewHelper.

Ниже приведен код button_tag, который я использовал для создания проблемы, описанной выше.Использование button_tag исправило проблему с моими параметрами, а также выглядит немного чище.Я надеюсь, что это поможет всем, у кого в будущем возникнут проблемы с button_tag.

<%= button_tag "#{answer.answer.titleize}", class: 'btn btn-block btn-lg btn-primary', data: {
    remote: true,
    method: :post,
    url:    answer_question_path(@question),
    params: { answer_id: answer.id }
  } %>


<%= button_to "#{answer.answer.titleize}", 
      answer_question_path(@question), 
      class: 'btn btn-block btn-lg btn-primary',
      params: { answer_id: answer.id },
      remote: true %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...