Railsが初めてで、変数をコントローラーからビューに表示する方法を知りたいと思っていました。
基本的に、2つのファイルがあります:articles_controller.rb
と_article.html.erb
コントローラーファイルには、ビューに表示する変数@article_votes
があります。 <%= @article_votes %>
を使用してみましたが、何も表示されません。
誰にもガイダンスがありますか?ありがとうございました!
Railsに慣れていないかわかりません。コントローラ内で定義したインスタンス変数はすべて、ビュー内で到達可能です。
したがって、@article_votes
はコントローラで定義され、書き込みます
<pre>
<%= @article_votes.inspect %>
</pre>
ビューのどこかにページが表示されます。
しかし _article.html.erb
はデフォルトでは表示されません。 show
にArticlesController
メソッドがある場合、ビューはshow.html.erb
がレンダリングされます。これは一般的なアプローチなので、index
メソッドの場合は、index.html.erb
。
お役に立てれば。
パーシャルを呼び出す場合は、@ article_votes変数を渡す必要があります。
<@= render 'article', :article_votes => @article_votes %>
パーシャル内で使用できます
<%= article_votes %>
<%= @article_votes%>の出力は、@ article_votesがオブジェクトであるクラスと、その_article.html.erbテンプレートを実際にレンダリングしているかどうかによって異なります
Index.html.erbファイルまたはこのビューをレンダリングするために使用しているコントローラーアクションにちなんで命名された.html.erbファイルで<%= render:partial => 'article'%>を呼び出すだけです。
通常、コントローラーから来る@article_votesは配列です(慣例により)複数の名前はオブジェクトの配列を示し、単数形の名前はテーブルに保持されているすべての値を含むarticle_votesと呼ばれるテーブルに基づくActiveRecordクラスの特定のオブジェクトを示します特定のレコード用。
@article_votesがnil以外のクラスのインスタンスであることを確認してください
それが単なる文字列である場合(@article_votes = "A string")、ビューに表示されます。 ArticleVotesモデルからすべてのオブジェクトを見つけるためにActiveRecordを呼び出した結果である場合、テーブルに何もない場合は空の配列になります。その配列から特定のオブジェクトを取得する必要があり、その後、そのオブジェクトで使用可能なメソッドのどれを表示するかを選択する必要があります
例えば.
Article_votesテーブルにnameという列があり、そのテーブルに「this is a name」という値を持つarticle_voteレコードが1つあると仮定すると、コントローラーアクションの次のコードは「This is a name画面に
@article_vote = ArticleVote.first
パーシャルに<%= @ article_vote.name%>があり、実際にそのパーシャルをレンダリングしていると仮定した場合
_article.html.erb
は部分的なビューです。ブラウザに適切なアクションが表示されていると確信していますか?
もう1つ重要なことは、レンダリングを呼び出す前に変数値を設定する必要があるということです。
モデルを保存しないとエラーが返される標準の「作成」ブロックがありました。この場合、インスタンス変数を設定していたので、エラーが発生したフォームに再レンダリングがスクロールします。
変数を明確に設定していたのに、なぜ変数が設定されなかったのかわかりませんでした。 「render action::new」の上に移動するとすぐに機能しました。