0

我希望我的用户能够查看 /categories/comedy/ 并查看喜剧类别中的所有帖子。问题是在我的数据库中,所有类别都带有大写字母,所以喜剧就是喜剧。这意味着 /categories/Comedy/ 确实有效,而 /categories/comedy/ 无效。我知道这似乎没什么大不了的,但从尽可能用户友好的角度来看,它是。

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 的新手,我完全不知道如何做到这一点。

感谢您阅读本文,并希望感谢您的帮助!垫子

4

1 回答 1

1

如果titleize类别名称中的所有单词的首字母大写,则使用:

Category.find_by_name(params[:id].titleize)

否则,使用humanize

Category.find_by_name(params[:id].humanize)

您选择哪个仅对多词类别名称很重要 -titleize将使所有单词的第一个字母大写,humanize将第一个单词的第一个字母大写。

humanize还具有从字符串中删除尾随的副作用_id-在您的情况下这可能不是问题。

我还应该提到,数据库比较通常不区分大小写,因此对于非参数化字符串,这可能不是必需的。路由路径变得更加必要parameterize,在这种情况下,多个单词变成连字符分隔。

于 2013-05-12T16:38:17.140 回答