我的应用中有很多页面。对于每个页面,我需要创建一个新变量和描述方法。如果我需要改变一些东西,我将不得不改变每一页。因此,我们的想法是在application_controller.rb
中创建通用方法。
例如,我的帖子中有很多类别,并针对我执行的页面定位了某些类别:@posts_for_interesting = Post.where(interesting: true)
,其他类别,例如:@posts_for_photos = Post.where(photos: true)
。
application_controller.rb
,必须看起来像这样:
def posts_for_all_pages(category)
@posts = Posts.where(category: true)
end
例如,photos_controller.rb
必须如此:
posts_for_all_pages(photos)
如何将此photos
传递给Post.where(category: true)
?
答案 0 :(得分:3)
就在原始代码中:
def posts_for_all_pages(category)
@posts = Posts.where(category: true)
end
category
中的Posts.where(category: true)
不变量,它将是一个硬编码符号:category
,因此无法正常工作。相反,写下这个:
def posts_for_all_pages(category)
@posts = Posts.where(category => true)
end
一个小小的变化,但绝对有不同的含义。
然后在调用方法时,将符号传递给它:
posts_for_all_pages(:photos)