0

簡単にするために、簡単な例を使用しています。

私はコントローラーメソッドを持っています:

def test

  @books.each do |book|
    @book_id = "EMI:#{book.id}"
    @book_test = ....(some function)
  end

end

'@book_id' と '@book_test' の値をループからビュー ページに渡すにはどうすればよいですか?

ビューページでコードを繰り返したくないことに注意してください。ループ内の値をビューページに渡したいだけです。

4

2 に答える 2

2

テストメソッドに @books があるのに、なぜそのメソッドでループを作成しているのですか? ビューファイルで直接実行し、繰り返しは必要ありません。

または、@book_ids と @book_tests のような 2 つの配列を作成し、準備した値を収集して、次のようにビューで使用します。

def test
@book_ids=[]
@book_tests=[]
@books.each do |book|
@book_ids << "EMI:#{book.id}"
@book_tests << ....(some function)
end
end
于 2013-04-25T13:20:22.803 に答える
1

コントローラーは、必要な不要な作業を行います。

私が質問で見たものから、仕事はモデルの方が良いです

class Book < ActiveRecord::Base

  def book_id
    "EMI:#{self.id}"
  end

  def book_tests
    "some function"
  end
end

# Then in the view
@books.each |book| do
   book.book_id
   book.book_tests
end

この方法はよりクリーンではありませんか?

于 2013-04-25T13:30:13.230 に答える