为简单起见,我使用一个简单的示例。
我有一个控制器方法:
def test
@books.each do |book|
@book_id = "EMI:#{book.id}"
@book_test = ....(some function)
end
end
如何将循环中的“@book_id”和“@book_test”值传递到视图页面?
请注意,我不想在视图页面中重复代码。只想将循环中的值传递给视图页面。
为简单起见,我使用一个简单的示例。
我有一个控制器方法:
def test
@books.each do |book|
@book_id = "EMI:#{book.id}"
@book_test = ....(some function)
end
end
如何将循环中的“@book_id”和“@book_test”值传递到视图页面?
请注意,我不想在视图页面中重复代码。只想将循环中的值传递给视图页面。
您在测试方法中有@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
你的控制器需要做它应该做的不必要的工作。
从我在问题中看到的情况来看,模特的工作更好
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
这样不是更干净吗?