Rails 需要有关控制器实践的建议
Rails need advice on controller practices
我尝试在控制器中遵循 RESTfull 方法,但有时我需要执行不适合默认操作的操作。例如。我有一个索引操作呈现所有文章
def index
@articles = Article.all
end
但是如果我也想搜索它们呢?我应该为它创建单独的操作,还是应该膨胀现有的控制器,例如:
def index
if params[:search]
@articles = Article.where(id: params[:search_id])
else
@articles = Article.all
end
end
正确的方法是什么?
您应该使用相同的操作并仅创建一个索引操作。搜索逻辑转到文章模型。
你应该关注 this
我会把它保存在索引中。如果你想保持它的清洁和标准化,你可以这样更改控制器代码:
def index
@articles = Article.search(params[:search])
end
然后在文章
中添加一个class方法
class << self
def search(options={})
if options.blank?
return self.all
else
..other search logic
end
end
end
请注意,您提供的搜索示例实际上没有意义,因为它指定了文章的 ID。如果您已经知道 id 那么这并不是真正的搜索:您不妨直接转到文章的显示页面。
我尝试在控制器中遵循 RESTfull 方法,但有时我需要执行不适合默认操作的操作。例如。我有一个索引操作呈现所有文章
def index
@articles = Article.all
end
但是如果我也想搜索它们呢?我应该为它创建单独的操作,还是应该膨胀现有的控制器,例如:
def index
if params[:search]
@articles = Article.where(id: params[:search_id])
else
@articles = Article.all
end
end
正确的方法是什么?
您应该使用相同的操作并仅创建一个索引操作。搜索逻辑转到文章模型。
你应该关注 this
我会把它保存在索引中。如果你想保持它的清洁和标准化,你可以这样更改控制器代码:
def index
@articles = Article.search(params[:search])
end
然后在文章
中添加一个class方法class << self
def search(options={})
if options.blank?
return self.all
else
..other search logic
end
end
end
请注意,您提供的搜索示例实际上没有意义,因为它指定了文章的 ID。如果您已经知道 id 那么这并不是真正的搜索:您不妨直接转到文章的显示页面。