我尝试在控制器中遵循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
什么是正确的方法?
答案 0 :(得分:1)
您应该使用相同的操作并仅创建索引操作。搜索逻辑转到文章模型。
您应该关注this
答案 1 :(得分:0)
我会将它保留在索引中。如果你想保持它的清洁并使其标准化,你就可以改变控制器代码:
def index
@articles = Article.search(params[:search])
end
然后在文章
中添加一个类方法class << self
def search(options={})
if options.blank?
return self.all
else
..other search logic
end
end
end
请注意,您为搜索提供的示例并不真正有意义,因为它指定了文章的ID。如果您已经知道该ID,那么这不是一个真正的搜索:您也可以转到该文章的显示页面。