这已得到修复。我想当我从我写的另一个视图复制它时,我已经离开了 :method => 放入表单助手。虚惊。
我的 rails 3 应用程序中有一条路线显示在“rake routes”中,但最终引发了 no route matches 错误。
我正在尝试创建一个命名空间路由,用于在 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->company 文件夹下的 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
app->views->company->users->create.html.erb 下的 create 操作的视图包含:
<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 %>
最后,当我运行“rake routes”命令时,我得到了这个:
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
我正在使用设计 gem 进行身份验证,如果需要,可以提供有关我的应用程序的更多详细信息。到目前为止,我添加的所有其他内容都很好。我猜这与我如何定义命名空间有关。我对 Rails 还是很陌生,这是我第一次尝试命名空间路由。
如果我提供的信息太多或太少,我深表歉意。任何帮助是极大的赞赏。