使用find_by id?
时如何强制参数化或小写的URL?文章控制器
def index
if params[:category].blank?
@articles = Article.all.order("created_at DESC")
else
@category_id = Category.find_by(name: params[:category]).id
@articles = Article.where(category_id: @category_id).order("created_at DESC")
end
end
应用程序视图
link_to category.name, articles_path(category: category.name)
模型:
class Article < ActiveRecord::Base
belongs_to :user
belongs_to :category
end
class Category < ActiveRecord::Base
has_many :articles
end
我尝试了以下内容......
link_to category.name, articles_path(category: category.name.downcase)
link_to category.name, articles_path(category: category.name).downcase
但我收到undefined 'method 'id' for nil:NilClass
。
我能够实现这一目标的唯一方法是为每个类别创建视图,但我希望尽可能保持干燥。
感谢任何帮助。
答案 0 :(得分:1)
当文章和类别之间存在关联时...您可以获得属于Category的所有文章:
SELECT * FROM users WHERE user = '".$_POST[user]."' AND pass = '".$_POST[pass]."'
在索引操作中将以上代码包含在文章控制器中。
在视图中......
@categories = Category.all
@categories.each do |category|
@category ||= Category.find(category.id) if category.name.downcase == params[:name]
end
if @category
@articles = @category.articles
else
@articles = Article.all.order("created_at DESC")
end