【问题标题】:Rails find by something other than id for show pageRails 通过显示页面的 id 以外的其他内容查找
【发布时间】:2020-12-09 18:59:38
【问题描述】:

我是 Rails 新手,我正在开发一个可以进入 yhour 柔道俱乐部的网站,我正在努力做到这一点,例如地址是 /club/denjudo,而不是 /clubs/2。在索引页面上,我可以进行设置,因此您可以单击俱乐部,它会带您进行俱乐部/登柔道,但我无法访问正确俱乐部的 recfd,它似乎选择了一个 rendom 俱乐部并显示那个信息。对于我拥有的控制器:

def show 
  @club = Club.find_by(params[:club_username])
end

任何帮助将不胜感激。

斯科特

【问题讨论】:

    标签: ruby-on-rails parameters


    【解决方案1】:

    您只想指定要查找的属性。根据您的示例。

    Club.find_by(username: params[:club_username])
    

    【讨论】:

    • 我试过 Club.find_by(club_username: params[:club_username]) 但它似乎没有从 url 获取 club_username 在这种情况下是 denjudo
    • @StephenScottMoore 你需要像get 'clubs/:club_username', to: 'clubs#show', as: :club 这样的路由(在新版本的rails 中resources :clubs, param: :club_username 将为你处理所有的CRUD 路由)。鉴于这对您来说都是新事物,您可以使用像 friendly_id 这样的库,它不会教您太多,但设置起来会容易得多。
    【解决方案2】:

    你需要设置routes.rb

     get '/clubs/:club_username', to: 'clubs#show', as: 'club'
    

    然后,确保 club_username 参数在您的架构中是唯一的。

    【讨论】:

    • 非常感谢。我真的很感谢你的帮助。我宁愿更精简地做到这一点,而不是尽可能使用 gem。
    猜你喜欢
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    相关资源
    最近更新 更多