我希望我的用户能够查看/分类/喜剧/并查看喜剧类别中的所有帖子。问题是在我的数据库中所有类别都有资本,所以喜剧就是喜剧。这意味着/类别/喜剧/工作和/类别/喜剧/没有。我知道这似乎不是什么大问题,但从尽可能方便用户的角度来看。
def show
if @category = Category.find_by_name.(params[:id])
@stories = @category.stories
else
redirect_to categories_path
flash[:error] = "There is no such category"
end
end
这是我控制器中的代码。我想我可能不得不在第一个字母大写,但由于我是Rails的新手,我完全不知道如何实现这一点。
感谢您阅读本文,希望感谢您的帮助! 垫
答案 0 :(得分:1)
如果类别名称中的所有单词的首字母大写,请使用titleize
:
Category.find_by_name(params[:id].titleize)
否则,请使用humanize
:
Category.find_by_name(params[:id].humanize)
您选择哪一个只对多字类别名称有用 - titleize
会使所有单词的第一个字母为大写,humanize
会使第一个单词的第一个字母为大写。
humanize
还有从字符串中删除尾随_id
的副作用 - 在您的情况下可能不会出现问题。
我还应该提到数据库比较通常不区分大小写,因此对于非参数化字符串,这可能不是必需的。当您parameterize
路径路径时,它变得更加必要,在这种情况下,多个单词将成为连字符分隔符。