ruby-on-rails - 使用下划线代替空格的路由

标签 ruby-on-rails ruby routes ruby-on-rails-4

Ruby on Rails 4.0。我有一个“专业”模型,“管理员”可以使用标准资源路由进行修改。然而,还有一个单独的面向消费者的 Controller ,用于以漂亮的方式显示这些“特色菜”。因此我有以下路线:

get "specialty/:name" => "site#specialty", as: :site_specialty
resources :specialties

site#specialty Controller 操作如下:

def specialty
  @specialty = Specialty.find_by_name(params[:name])
end

这会产生类似于以下百分比转义路由的 URL:

/specialty/project%20management

我宁愿有这样的东西:

/specialty/project_management

如何用下划线替换空格并仍然在 Controller 操作中查找正确的模型?任何有关安全性的附注也值得赞赏

最佳答案

尝试使用to_param:

型号:

class Specialty < ActiveRecord::Base
  def to_param
   name.parameterize
  end
end

Controller :

def specialty
    @specialty = Specialty.find(params[:id])
end

应该可以了...

引用文献:

关于ruby-on-rails - 使用下划线代替空格的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19202562/

相关文章:

ruby - 冒号(:) appears as forward slash (/) when creating file name

asp.net-core - 未找到 IEndpointRouteBuilder 接口(interface)

ruby-on-rails - 仅具有查询字符串或数字的 Rails 4 路由约束

ruby-on-rails - 在数据库中存储正则表达式

此实现的 Ruby 正确数据结构

ruby-on-rails - 如何通过 Deliver_now 以 HTML 形式发送电子邮件而不需要单独的类

ruby - 剥离的函数!,然后将零长度字符串转换为 nil

ruby-on-rails - 路由错误未初始化常量 UsersController

javascript - Rails - 当其他用户被分配新客户端时向他们发送警报(无需刷新其页面)

ios - 使用 Rails 生成苹果触摸图标