动态确定是否存在收集路径

时间:2014-09-11 06:21:14

标签: ruby-on-rails

这似乎是一个不寻常的案例。

如果我动态地给予" @ model"变量,可以是任何ActiveRecord模型类,如何检查该模型是否具有相应的" / models"路线?

有时候,模型是另一个资源中的浅层资源......这意味着它永远不会有一个" / models"路径本身,所以url_helper不会存在。

我能做到这一点但很糟糕!

Rails.application.routes.url_helpers.methods.include? "#{@model.to_s.pluralize.downcase}_path"

1 个答案:

答案 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 如果可能,我会使用现有的管理员宝石,例如ActiveAdminRailsAdmin。通常他们就足够了。