的Ruby / Rails。将变量传递给参数

时间:2016-08-27 23:12:54

标签: ruby-on-rails ruby ruby-on-rails-3

我的应用中有很多页面。对于每个页面,我需要创建一个新变量和描述方法。如果我需要改变一些东西,我将不得不改变每一页。因此,我们的想法是在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)

1 个答案:

答案 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)