0

以下の new.html.erb を送信するhttp://localhost:3000/user/new_user_by_adminと、エラーが表示されます: "/user/new_user_by_admin" と {:method=>:post} に一致するルートがありません。このページを に送信したいhttp://localhost:3000/users/new_user_by_admin。どのような変更が必要ですか?

<% form_for :user,:url => url_for { :controller => :user ,:action => :new_user_by_admin, :method => :post }  do |f| %>
    <p><%= f.label :login %><br/>
            <%= f.text_field :login %></p>

            <p><%= f.label :name %><b`enter code here`r/>
            <%= f.text_field :name %></p>

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

            <p><%= f.label :password %><br/>
            <%= f.password_field :password %></p>

            <p><%= f.label :password_confirmation, 'Confirm Password' %><br/>
            <%= f.password_field :password_confirmation %></p>
            <p><%= submit_tag 'Sign up' %></p>
        <% end %>

ユーザーコントローラーのコードは次のとおりです。

class UsersController < ApplicationController
def new_user_by_admin
      @user=User.new(params[:user])
      @user.save
      redirect_to("/users/")
  end
end

routes.rb のコードは次のとおりです。

ActionController::Routing::Routes.draw do |map|
  map.home '' , :controller => 'users', :action => 'index'
  map.logout '/logout', :controller => 'sessions', :action => 'destroy'
  map.login '/login', :controller => 'sessions', :action => 'new'
  map.register '/register', :controller => 'users', :action => 'create'
  map.signup '/signup', :controller => 'users', :action => 'new'
  map.adduser '/new_user_by_admin', :controller => 'users', :action => 'new_user_by_admin', :method => :post

  map.resources :users
  map.resource :session
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
end

ヘルプ!!

4

2 に答える 2

0
map.new_user_by_admin '/new_user_by_admin', :controller => 'users', :action => 'new_user_by_admin' 

この変更は、routes.rb ファイルで上記の問題を解決するために行ったものです。

于 2013-01-23T06:25:47.630 に答える
0

あなたのマッチングは間違っています。そのはず:

あなたがするとき:

map.adduser '/new_user_by_admin', :controller => 'users', :action => 'new_user_by_admin', :method => :post

実際に必要なものではなく、アクションを url localhost:3000/new_user_by_admin に一致させています。以下のものを試してください:

map.adduser '/users/new_user_by_admin', :controller => 'users', :action => 'new_user_by_admin', :method => :post

コントローラーのアクションを localhost:3000/users/new_user_by_admin に一致させます

于 2013-01-22T05:51:39.547 に答える