ruby-on-rails - 在 ActiveAdmin 网址中使用 Slug

标签 ruby-on-rails activeadmin

我已经将我的 Rails Controller 设置为使用 slugs 而不是 ids 来识别“配件”(用于显示/编辑操作),因此我可以使用这样的 url 来访问显示页面:

http://localhost:3000/datasheets/slug-attribute-of-fiting

在 routes.rb 中

resources :datasheets, only: [:index, :show, :edit], param: :slug

在 datasheets_controller.rb 中

 def show
    fitting = Fitting.where(slug:(params[:slug])).first
    pdf = DatasheetPdf.new(fitting)
    send_data pdf.render, filename: "#{fitting.slug}-datasheet-#{Date.today}.pdf", type: 'application/pdf', disposition: 'inline'
  end

对于上面提到的 url 上的正常显示 View ,这一切都正常工作,但是在添加 ActiveAdmin gem(它生成自己的 Controller ,据我所知无法访问)时会出现问题。如果您尝试在事件管理仪表板中编辑“配件”,您将被定向到 http://localhost:3000/admin/fittings/slug-attribute-of-fiting/edit返回以下错误:

ActiveRecord::RecordNotFound in Admin::FittingsController#edit
Couldn't find Fitting with 'id'=slug-attribute-of-fiting

鉴于我无法访问事件的管理 Controller (对吗?)我如何拦截 slug 并使用它来提供 id。

谢谢

最佳答案

将以下内容添加到 app/admin/fittings.rb 解决了问题:

controller do
    defaults :finder => :find_by_slug
end

关于ruby-on-rails - 在 ActiveAdmin 网址中使用 Slug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51671203/

相关文章:

ruby-on-rails - rails 应用程序。从多个模型中收集元素并在主页上显示此分页的元素列表

ruby-on-rails - 是否可以在 activeadmin 的侧边栏中访问完整的索引范围?

javascript - 如何在 ActiveAdmin 中使用 Javascript 检索索引页面上选定 ID 的列表?

ruby-on-rails - rails rspec -(第二次测试)预期响应为 < :redirect>, 但为 <200>

ruby-on-rails - Rails Activeadmin - 自定义关联选择框

ruby-on-rails - rails :how to show name instead of ID or Address in has_many relation in active_admin?

ruby-on-rails - 在 ActiveAdmin 中关联可读用户下拉列表

css - 允许在多个 Rails 应用程序上自定义主题

ruby-on-rails - 如何在 Rails 3 中使用 AJAX 请求实现重定向响应?

ruby-on-rails - Cucumber 和/或 Webrat 讨厌?