Mar*_*tin 3 ruby ruby-on-rails ruby-on-rails-3
我有一个用户模型和一个关于模型.about模型是一个页面,用户可以在其中获得更多关于它们的信息,因为它的性质更适合将它放在单独的模型而不是用户模型中.
我希望能够将它路由到/:username/about之类的东西,并获取在该路径上工作的所有动词(GET POST,PUT,DELETE).
/:username/about
/:username/about/edit
/:username/about
Run Code Online (Sandbox Code Playgroud)
这就是我已经拥有的
# routes.rb
resources :users do
resources :abouts
end
match ':username/about' => 'abouts#show', :as => :user_about
match ':username/about/add' => 'abouts#new', :as => :user_new_about
match ':username/about/edit' => 'abouts#edit', :as => :user_edit_about
Run Code Online (Sandbox Code Playgroud)
在我的模型中
# about.rb
belongs_to :user
# user.rb
has_one :about
Run Code Online (Sandbox Code Playgroud)
当我正在做一个帖子或放到/ roses/about它将它解释为一个节目
Started POST "/roses/about" for 127.0.0.1 at Sun Feb 27 16:24:18 -0200 2011
Processing by AboutsController#show as HTML
Run Code Online (Sandbox Code Playgroud)
我可能错过了路由中的声明,但是当它与默认值不同时,它是否会为资源声明每个动词?
存档这个最简单,最简洁的方法是什么?
Per*_*mal 11
使用a时has_one
,将它声明为路由中的单一资源可能是有意义的.含义
resources :users do
resource :about # notice "resource" and not "resources"
end
Run Code Online (Sandbox Code Playgroud)
如果要覆盖new/edit的路径,请:path_names
在resource/resources-call中添加一个选项:
resources :about, :path_names => { :new => 'add', :edit => 'edit' }
该官方文档有很多其他的提示和技巧的路由,以及.