0

我想更改:idURL 上的参数。我在 routes.rb 文件中添加了如下内容:

match "articles/:name/edit", :to => 'articles#edit', :as => 'edit_article'

认为:name服务器params[:name]稍后会在 Rails 中读取它。我编辑了我的文章控制器定义以进行编辑:

def edit
    @article = Article.find(params[:name])
end

我总是得到错误couldn't find article with id=test,我想知道为什么“id”而不是:name?我也尝试更改匹配以获取但我得到了相同的结果。

我还有默认资源 :articles 仍在我的 routes.rb 文件中,不知道那里是否有类似双重规则的东西。

整个事情是,我会在我的 URL 中使用名称而不是 ID 号——不仅仅是编辑名称,我可以使用 show 方法处理它,但不是使用编辑/更新/删除。

我正在阅读有关路由的信息,但我无法弄清楚我做错了什么。

4

1 回答 1

2

默认情况下,按find搜索id

您应该将其替换为find_by_name.

建议:使用friendly_id

于 2012-10-12T12:53:29.627 回答