2011-08-21 81 views
0

此问题已修复。我想我已经离开了:method =>当我从我写的另一个视图中复制它时,将其放入窗体帮助器中。虚惊。Rails 3命名空间路由错误 - 路由存在但未起作用

我在我的轨道3应用程序中显示'耙路线',但结束了提高无路线匹配错误的路线。

我正在尝试创建一个命名空间路由,用于在current_user管理的公司下创建和添加新用户。命名空间是'公司'。应该处理此操作的控制器是'users_controller',位于controllers-> company文件夹内。

我的routes.rb文件包含以下代码:

namespace :company do 
    resources :users 
    resources :manage, :only => [:show,:edit,:update] 
end 

devise_for :users 

我的APP-> controllers->公司文件夹下users_controller.rb包含此代码:

def new 
    @user = current_user.company.users.new 
end 

def create 
    @user = current_user.company.users.create(params[:user]) 
    if @user.save 
    flash[:notice] = "Successfully Added New User" 
    redirect_to company_path(current_user.company.id) 
    else 
    flash[:warn] = "Correct Errors and Resubmit" 
    # render :action => 'new' 
    end 
end 

视图的创建action-> app-> views-> company-> users-> create.html.erb包含:

<h2>Adding User for <%= current_user.company.name %></h2> 

<%= form_for(@user, :url => company_users_path) do |f| %> 


    <p><%= f.label :email %><br /> 
    <%= f.email_field :email %></p> 

    <p><%= f.label :first_name %><br /> 
    <%= f.text_field :first_name %></p> 

    <p><%= f.label :last_name %><br /> 
    <%= f.text_field :last_name %></p> 

    <p><%= f.label :password, "New Password" %><br /> 
    <%= f.password_field :password %></p> 

    <p><%= f.label :password_confirmation, "Confirm New Password" %><br /> 
    <%= f.password_field :password_confirmation %></p> 

    <p><%= f.submit "Add User" %></p> 
<% end %> 

<%= link_to "Back", :back %> 

最后当我运行'耙路线的命令我得到这个:

company_users  GET /company/users(.:format)   {:action=>"index", :controller=>"company/users"} 
        POST /company/users(.:format)   {:action=>"create", :controller=>"company/users"} 
new_company_user GET /company/users/new(.:format)  {:action=>"new", :controller=>"company/users"} 
edit_company_user GET /company/users/:id/edit(.:format) {:action=>"edit", :controller=>"company/users"} 
company_user  GET /company/users/:id(.:format)  {:action=>"show", :controller=>"company/users"} 
        PUT /company/users/:id(.:format)  {:action=>"update", :controller=>"company/users"} 
        DELETE /company/users/:id(.:format)  {:action=>"destroy", :controller=>"company/users"} 

'新'行动呈现就好。我提交表单后收到的错误是:

Routing Error 

No route matches "/company/users 

我使用的用于身份验证的色器件的宝石,并能提供有关我的应用程序的更多细节,如果需要的话。到目前为止,我添加的所有内容都很棒。我猜测它与我如何定义命名空间有关。我对rails还是比较新的,这是我第一次尝试命名空间路由。

我很抱歉,如果我提供的信息太多或太少。任何帮助是极大的赞赏。

回答

1

尝试到的form_for更改为:

form_for([:company,@user]) 

它应该工作。见http://guides.rubyonrails.org/form_helpers.html#dealing-with-namespaces

+0

我试过这个,我仍然收到同样的错误。我想这可能与设计认证宝石有关,但我可能会在这里走错方向。我有另一个名为signup_controller的控制器,它可以创建用户帐户和公司。唯一真正的区别在于命名空间。 –

+1

不知道为什么这不起作用,我第一次重新提交表单,但它结束后再次尝试修复它。我猜这个表格在第一次刷新后没有重新加载。非常感谢lucapette! –

+0

不客气。很高兴工作! – lucapette