【问题标题】:How to define own routing helpers in rails 3?如何在 Rails 3 中定义自己的路由助手?
【发布时间】:2011-06-24 16:12:23
【问题描述】:

我使用 polimorphic_path 并且它有些错误。此方法需要一些未定义的路由助手。我如何定义(如常规方法)自己的路由助手,它将像“model_name_path,model_name_url 等”一样使用?

【问题讨论】:

    标签: ruby-on-rails routes


    【解决方案1】:

    这个解决方案对我有用。

    将此代码添加到config/routes.rb 文件的末尾。确保将 MyApp 替换为您的应用程序名称。

    MyApp::Application.routes.named_routes.module.module_eval do
      def model_name_path(*args)
        # Your code here
      end
    
      def model_name_url(*args)
        # Your code here
      end
    end
    
    MyApp::Application.routes.named_routes.instance_eval do
      @helpers += [:model_name_path, :model_name_url]
    end
    

    这些自定义方法将在控制器、视图和测试中可用。

    【讨论】:

    • 在 Rails 4 中:Rails.application.routes.named_routes.url_helpers_module.module_eval 做 ...
    【解决方案2】:

    我知道 _path 的一种可能的答案,但对于 _url 来说同样的方法对我不起作用。有人知道为什么吗?

    # at the bottom of config/routes.rb
    module ActionView::Helpers::UrlHelper
        def model_name_path model, args={}
            # your implementation
        end
    end
    

    【讨论】:

    • 哦,我认为它也适用于 _url,只是我是从控制器而不是视图调用 _url。
    • 假设我有一个名为 user_links 的辅助方法名称,我在哪里指定方法名称,例如,.我有一个 Post 模型。我的代码看起来像这样:- ~ module ActionView::Helpers::UrlHelper def post_name_path post, args={} # 你的实现 --> 这到底应该有什么?结束结束~
    • 对不起,我尝试使用适当的代码块,但在 cmets 部分中无法正确使用。
    猜你喜欢
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 2012-10-27
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    相关资源
    最近更新 更多