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 并收集您准备好的值并在您的视图中使用它们,如下所示:

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 回答