2011-08-21 148 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