2016-04-30 7 views
-1

私が作成したすべてのアイテムのリストを表示しようとしています。 show.html.erbで(「参加」と呼ばれる)、私はショーでデータのリストが表示されます

<%= @join = Join.all %> 
    <%= @join.each do |join| %> 
    <%= join.email %> 
<% end %> 

を書いて、それが働いているが、私はページに行くとき、私が言うのデータの束を得る:#<Join::ActiveRecord_Relation:0x007fbca99f12b8> [email protected] [#<Join id: 1, email: "[email protected]", created_at: "2016-04-30 12:48:16", updated_at: "2016-04-30 12:48:16">]誰もが取得する方法を知っていますがそれを取り除く?

+0

余分な '@ join'変数を宣言し、ブロック全体を定義する代わりに、単に<%= Join.all.map(&:email).join( '
')%>'を実行することができます。 – vee

答えて

2

<%= @join.each do |join| %>から<% @join.each do |join| %>に変更してください。 <%=...%>のRubyコードは、erbプロセッサによって解析され、htmlを出力します。各doブロックの本体の内部にhtml出力を生成するのは問題ありません。なぜなら、これはここで欲しいものですが、do-do式は純粋にルビであり、html.erbファイル内の<% ...%>式で評価されるべきです。

<%= @join = Join.all %>から<% @join = Join.all %>と同じコンテキストで変更します。実際には、私は常に乱視の代わりにコントローラのメソッドの中に@joinのようなインスタンス変数を生成するべきです。

+1

さらに、 'Join'はモデルのかなり恐ろしい名前です。 'Join.joins(:something)'は、SELECT結合のようなSQLを生成します。* FROMは、JOINにJOIN something.idをジョインします。それは[Dr. Seuss](https://en.wikipedia.org/wiki/Dr._Seuss)childrens本。 – max