【发布时间】:2014-08-31 23:27:42
【问题描述】:
更新:我是个白痴。我将@answers 添加到用户控制器而不是问题控制器。现在我将其更改为它正在显示的问题控制器。我有提交错误,但如果我无法弄清楚,我将启动一个新线程。
我已经阅读了几十个相关问题并尝试了解决方案但没有成功。我想知道我的路由设置是否不正确。这是我得到的错误:
First argument in form cannot contain nil or be empty on line 5
这是我的表单代码。这是一个答案表格,但它显示在问题索引页面上的特定问题下。
<%= form_for @answer do |answer| %> <<< LINE GENERATING ERROR
<%= answer.label :answer, "What do you think?" %>
<%= answer.text_area :answer %>
<%= answer.button %>
<% end %>
这是我的路由信息:
resources :answers
get 'answers/new' => 'questions#index'
post 'answers' => 'questions#index'
这是我的 answers_controller 信息:
类 AnswersController def index
@answers = Answer.all
end
def new
@answer = Answer.new
end
def create
@answer = Answer.new(answer_params)
if @answer.save
redirect_to root
else
render 'new'
end
end
private
def answer_params
params.require(:answer).permit(:answer, :users_id, :questions_id)
end
【问题讨论】:
-
听起来像是在告诉您@answer 为零 - 是吗?
-
您希望您的表单参数进入答案控制器,那么为什么您有
get 'answers/new' => 'questions#index'和post 'answers' => 'questions#index'路由? -
form_for在哪里?哪个路线会导致此错误? -
我认为您应该将问题控制器发布到。
-
在
questions#index中应该将@answer分配给一个新的答案,否则你会得到nil 错误。
标签: ruby-on-rails