2013-01-18 88 views
0

我正在用Ruby on Rails构建一个Web应用程序,并且我希望路线是用户可编辑的。所以我虽然增加了一个简单的初始化工具来添加用户指定的路由,但我真的不知道该怎么做。有没有一些简单的方法来做到这一点?我试过这个application.rb在初始化程序中设置Rails路线

config.after_initialize do 
    Rails.application.reload_routes! 
    Rails.logger.info "#{Rails.application.routes.routes.map(&:path)}" 
    MyApp::Application.routes.draw do 
     get '/droplet' => 'admin#index' 
    end 
end 

但这似乎并不奏效。这是我在我的routes.rb

MyApp::Application.routes.draw do 
    devise_for :users 

    root :to => 'target_finder#show_page' 
    match '*path' => 'target_finder#show_page' 

end 

在此先感谢!

+0

请给我们一万美元的观点,您要在这里做什么,因为它表明我们只能猜测背后真正的问题是什么。 – Hugo

回答

0

如何使一个控制器操作接受参数,测试以查看它们是否与配置的路线匹配,并从那里采取行动。

MyApp::Application.routes.draw do 
    devise_for :users 

    root :to => 'target_finder#show_page' 
    match '*path' => 'test_if_custom#CustomController' 

end 

class CustomController < ActionController::Base 

    def test_if_custom 
    if url_for(params) == Rails.application.routes.routes.map(&:path) 
     take_custom_action 
    else 
     take_default_action # Redirects or errors, maybe. 
    end 
    end 

end 
0

我建议有一个看friendly_id宝石,它可以从用户的任何属性定义定制的路线,所以你可以有一个:url用户属性,然后利用它来进行路由通过添加slug索引,然后把extend FriendlyId和用户模型中的friendly_id :url, use: :slugged

相关问题