Rails 如何路由到命名空间下的控制器的问题

moliliang · 2014年03月12日 · 最后由 moliliang 回复于 2014年03月14日 · 2241 次阅读

路由:

namespace :super_admin do
  resources :vhost do

  end
  root to: "vhost#index"
end

view 页面(haml)

= form_for  @vhost, html:{class:"form-horizontal"}  do |f|

会提示

undefined method `vhosts_path' for #<#<Class:0x007fe182bd3970>:0x007fe182bd0b08>

请问,如何才能让 form post 到 superadmin 目录下的 vhost 控制器呢。。。谢谢。。而且要有通用性,update,create,等都能用上。。。。谢谢

= form_for @vhost, url: super_admin_vhost_path(@vhost) do |f|

= form_for [:super_admin,@vhost] do |f|

#2 楼 @smallX 这个试过,不行····

#1 楼 @billy 好像不能通用在 update,edit,create。。。。我试试看

@moliliang 在 form 里面你只用考虑 create 和 update 就可以了。这两个的路径名是一样的,只是 method 不同,一个是 post, 另一个是 put(Rails 3) 或 patch(Rails 4)。form_for 会智能检查if @vhost.new_record? 如果是, method 自动为 POST, 发到 create, 如果不是,自动到 update。

#5 楼 @billy 思路上确实是这样,然后我 这边改成这样后提示 No route matches

现在我的路由没变

#5 楼 @billy 说是没匹配的路由,但是我又显示我的控制器和 对应的 view

ActionController::UrlGenerationError in SuperAdmin::Vhost#new

@moliliang , 你用 rake routes 查看一下找到合适的就行了。

#8 楼 @billy 编辑功能是可以的,就是 new 的时候说没匹配到路由。可能是 new 和 update 是不同的路由吧。我看看在 action 里面手动设置 form_for 的 url

#8 楼 @billy 我在不同的方法(update,new)中手动修改了 form 的 post 地址,。。。但是总感觉这样做很尴尬。。。

#8 楼 @billy 是 new 和 edit 中。。。

#3 楼 @moliliang 不行? 什么错误?

#12 楼 @smallX 没有错误,就是不能应用在不用的场景,问这个问题之前我自己有试过这个方案。最终用了@bllly的方式。感谢。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册