名前の出力をしたいです。
具体的には、名前登録のビューで打ち込んだ名前を、次のページのhomeビューのページに出力したいです。
<コントローラ> def create @teacher = Teacher.new( id: params[:id], name: params[:name] ) if @teacher.save redirect_to("/home/#{@teacher.id}") else flash[:notice] = "Please teach us your name." render action: :name end end def home end
<名前登録ビュー> <%=form_tag("/create") do%> <input name="name"> <input type="submit" value="opan the door!"> <%end%>
<homeビュー> <%= @teacher.name %>
<ルーティング> …… get "create" => "teacher#create" post "create" => "teacher#create" get "home/:id" => "teacher#home" ……
知ってる知識で書いて、単に名前を出力するだけならこれででるはずなのですが、homeに移ったところでなぜか
NoMethodError
がでてきて、その下のは
undefined method `name' for nil:NilClass
と書かれます。
経験から、@teacherが定義されてないのかと思って、強引だけどhomeビューに
<% @teacher = Teacher.find_by(name_t: params[:name])%>
を入力しても変わりませんでした。
ただ、同じところに
<% @teacher = Teacher.new(name_t: params[:name])%>
と入力するとエラーは出ません。が、出力はされず、まっさらなページが出されるだけです。
ただ名前の出力だけなので、変なところを見落としているだけかもしれません。
どなたか、知恵を貸してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/24 16:51
退会済みユーザー
2018/03/25 00:38