为简单起见,我使用了一个简单的例子。
我有一个控制器方法:
def test
@books.each do |book|
@book_id = "EMI:#{book.id}"
@book_test = ....(some function)
end
end
如何传递'@book_id'&从循环到视图页面的'@book_test'值?
请注意,我不想在视图页面中重复代码。只是想将循环中的值传递给视图页面。
答案 0 :(得分: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
答案 1 :(得分: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
这样干净吗?