をレンダリングするときにオブジェクトの配列をつかむことができません。Railsが、私は2つのコントローラを持って、私はコントローラのアクション
class SessionsController < ApplicationController
def create
@person = Person.find_by(email: params[:session][:email].downcase)
if @person && @person.authenticate(params[:session][:password])
session[:user_id] = @person.id
render('people/index')
else
render('session/new')
end
end
class PeopleController < ApplicationController
def index
@person = Person.all
end
私の見解は以下の通りです:
...
<% @person.each do |p| %>
<tr>
<td><%= p.name %></td>
<td><%= p.gender %></td>
<td><%= p.birthdate %></td>
<td><%= p.interests_concatenated %></td>
</tr>
<% end %>
私は、ユーザーの資格情報を入力した場合と、ログインしようとすると、次のエラーメッセージが表示されます。
NoMethodError in Sessions#create /Users/fizz/workspace/rails_people/app/views/people/index.html.erbを表示しています#Personの定義済みメソッド `each ':0x007fd345aa1778
RailsがPerson.all配列を取得せずに@person変数に設定しているようですが、なぜですか?
これはうまくいきましたので、ご説明いただきありがとうございます。レンダリングを使うと、Railsはpeople/index.html.erbをセッション#データ内のデータだけを使ってフェッチし、#indexの処理を完全にスキップします。 – MLZ
別のコントローラーアクションにアクセスするための新しい要求を行う必要があります。 renderメソッドはリクエストを行いませんが、redirect_toメソッドはリクエストを行います。 – etdev
Gotcha、もう一度感謝します。 – MLZ