按名称而不是 id 查找的参数

Rob*_*Rob 3 ruby-on-rails params ruby-on-rails-4

我希望 url 结构是 'actors/joe-blogs' 而不是 'actors/1',但是由于 id 不在 url 中,我无法通过名称查找参数而不是通过 id 查找。

我有以下路线

get 'actors/:name' => 'actors#show'
Run Code Online (Sandbox Code Playgroud)

演员表

| id |   name    |
------------------
| 1  | Joe Blogs |
Run Code Online (Sandbox Code Playgroud)

url /actors/joe-blogs 工作正常,但按名称而不是 id 查找参数不起作用。

演员控制器:

    def show
       @actor = Actor.find(params[:name])
    end
Run Code Online (Sandbox Code Playgroud)

按 params 名称查找会{"name"=>"joe-blogs"} 寻找演员,而不是寻找演员{"name"=>"Joe Blogs"}

我怎样才能让参数工作以便它抓住{"name"=>"Joe Blogs"}?名称之间没有“-”?

Pav*_*van 6

你应该使用find_by而不是find.

def show
  @actor = Actor.find_by(name: params[:name])
end
Run Code Online (Sandbox Code Playgroud)