私は質問の入力と5つの入力を持つフォームを作成しようとしていますが、それぞれが回答の選択肢を表しています。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>
どのように私はこのエラーなしshow.html.erb
にnew.html.erb
の入力を表示することができます?。 <%= @mcq.q %>
は機能しません。あなたはMcq.find(params[:id])
として@Mcq
を作成したが、その後、あなたのshow
ビューで、あなたがコントローラの中でそれを宣言したとして、それを同じように(名前)にアクセスする必要があるので、mcq
としてそれにアクセスしたい。あなたのshow
方法で
@Mcqとmcqの違いを説明できますか? @記号と毛管の違いは?なぜそれは重要ですか? – mazing
私は@mazingという答えを更新しました。 –
すばらしい説明をありがとう!:) – mazing