【发布时间】:2018-12-31 03:57:35
【问题描述】:
我目前正在与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 或其他论坛的其他地方找到任何解决方案。有任何想法吗?
【问题讨论】:
-
你试过用
button_to代替button_tag吗?第一种方法可以更好地控制远程,而无需使用data。 -
这很尴尬。我早些时候尝试过没有成功,但现在似乎已经奏效了。谢谢。
-
成功不丢人!如果您有一个可行的解决方案,使用这种方法将修改后的代码显示为自我回答,这对其他人来说是有教育意义的。
标签: ruby-on-rails ruby