我正在尝试构建一个表单,其中包含一个问题输入和五个输入,每个输入表示一个答案选项。Rails视图无法显示表单输入参数
我的问题是在我的/show.html.erb
文件中,它引发了一个我找不出来的错误。
例如:
QUESTION
ANS1
ANS2
ANS3
ANS4
ANS5
这是我到目前为止有:
# app/views/mcqs/new.html.erb
<%= form_for :mcq, url: mcqs_path do |f| %>
<%= f.label :title %><br>
<%= f.text_field :q %>
<%= f.label :ans1 %><br>
<%= f.text_field :ans1 %>
<%= f.label :ans2 %><br>
<%= f.text_field :ans2 %>
<%= f.label :ans3 %><br>
<%= f.text_field :ans3 %>
<%= f.label :ans4 %><br>
<%= f.text_field :ans4 %>
<%= f.label :ans5 %><br>
<%= f.text_field :ans5 %>
<%= f.label :category_id %><br>
<%= f.number_field :category_id %>
<%= f.label :tags %><br>
<%= collection_check_boxes(:mcq, :tag_ids, Tag.all, :id, :name) %>
<%= f.submit %>
<% end %>
控制器:
# app/controllers/mcqs_controller.rb
class McqsController < ApplicationController
def new
@Mcq = Mcq.new
end
def index
@questions = Mcq.all
end
def show
@Mcq = Mcq.find(params[:id])
end
def create
@Mcq = Mcq.new(params[:mcqs])
# @Mcq.save returns a boolean indicating whether the article was saved or not.
if @Mcq.save
redirect_to @Mcq
else
render 'new'
end
end
end
的观点:
# app/news/mcqs/show.html.erb
<strong>MCQ Title:</strong><br>
<%= mcq.q %>
<strong>Question Text:</strong><Br>
<%= mcq.ans1 %>
...<strong>MCQ Title:</strong><br>
<%= mcq.q %>
<strong>Question Text:</strong><Br>
<%= mcq.ans1 %>
...
错误:
NameError in Mcqs#show
Showing app/views/mcqs/show.html.erb where line #4 raised:
undefined local variable or method `mcq' for #<#
<Class:0x007fad811936e8>:0x007fad838a47a0>
<strong>MCQ Title:</strong><br>
<%= mcq.q %>
</p><p>
我怎样才能显示new.html.erb
对show.html.erb
输入没有这个错误? <%= @mcq.q %>
不起作用。
你能解释@Mcq和mcq之间的区别吗? @符号和capilations差异?为什么这有关系? – mazing
我更新了答案@mazing,试着自己去看看不同之处。 –
感谢您的好解释!:) – mazing