这似乎是一个不寻常的案例。
如果我动态地给予" @ model"变量,可以是任何ActiveRecord模型类,如何检查该模型是否具有相应的" / models"路线?
有时候,模型是另一个资源中的浅层资源......这意味着它永远不会有一个" / models"路径本身,所以url_helper不会存在。
我能做到这一点但很糟糕!
Rails.application.routes.url_helpers.methods.include? "#{@model.to_s.pluralize.downcase}_path"
答案 0 :(得分:0)
我建议将简单资源与嵌套资源分开。那你只需要处理一种路线(简单的路线)。从Admin :: Base控制器继承控制器,如:
class Admin::BaseController < ApplicationController
# abstracted admin logic
end
class Admin::PeopleController < Admin::BaseController
end
class Admin::CategoriesController < Admin::BaseController
end
并在视图中使用多态变体如:
<%= link_to 'all', @model_object.class.name.underscore.pluralize %>
<%= link_to 'show', @model_object %>
<%= link_to 'new', [:new, @model_object] %>
<%= link_to 'edit', [:edit, @model_object] %>
<%= link_to 'delete', @model_object, method: :delete %>
<%= form_for @model_object do |f| %>
<!--Create or Update form for model object-->
<% end %>
还阅读有关多态路线的信息:Simple RESTful Ruby on Rails routes 如果可能,我会使用现有的管理员宝石,例如ActiveAdmin或RailsAdmin。通常他们就足够了。