1

私はエラーを抱えており、誰かがこれをどうするかについての手がかりを与えてくれることを願っています。私はある意味でアジャイル開発の本を選択的にフォローしており、それらのコードをコピーしている間、結果は次のようになります。

Routing Error
No route matches [POST] "/sessions/new"
Try running rake routes for more information on available routes. 

これは、routes.rbファイルにあるものです。

get 'admin' => 'admin#index'
controller :sessions do
 get 'login' => :new
 post 'login' => :create
 delete 'logout' => :destroy
end
resources :users

私のsession_controller:skip_before_filter:authorize def new end

def create
 user = User.find_by_name(params[:login_name])
 if user and user.authenticate(params[:password])
  session[:user_id] = user.id
  redirect_to admin_url
 else
  redirect_to login_url, alert: "Invalid user/password combination"
 end
end

def destroy
 session[:user_id] = nil
 redirect_to users_url, notice: "Logged out"
end

私のセッション#new.html.erb:

  <% if flash[:alert] %>
  <p id="notice"><%= flash[:alert] %></p>
 <% end %>
 <%= form_tag do %>
  <fieldset>
    <legend>Please Log In</legend>
    <div>
      <%= label_tag :login_name, 'Login name:' %>
      <%= text_field_tag :login_name, params[:login_name] %>
    </div>
    <div>
      <%= label_tag :password, 'Password:' %>
      <%= password_field_tag :password, params[:password] %>
    </div>
    <div>
      <%= submit_tag "Login" %>
    </div>
  </fieldset>
<% end %>

また、has_secure_passwordを使用していて、最近Rubyv193とRails3.2.8に更新しました。私はまだRORを学んでいるだけなので、あなたの助けに感謝します-私はそれを自分で理解しようとしてきましたが、できませんでした。

4

2 に答える 2

1

現在、フォームが表示されているのと同じページに投稿しています。あなたのビューはコントローラーのnewアクションであるためsessions、に送信しPOSTていsessions/newます。POST次に、Rails は へのルートを探しsessions#newます。何も存在しないため、エラーになっています。

ただし、ルートを見ると、フォーム送信を処理するために設定しpost 'login' => :createたアクションに実際に行くルートがあることがわかります。createしたがって/login、ルートにフォームを送信すると、目的のアクションまですべてが適切に POST されます。

これを行うには、次のように変更します。

<%= form_tag do %>

<%= form_tag('/login') do %>

また、これを読むことを強くお勧めします: http://guides.rubyonrails.org/routing.htmlこれにより、Rails ルーティングの仕組みの概要がよりよく理解できます。

編集: おそらく /login に再送信しているのを見たところですが、これは機能するはずです...現在のアクションに送信するのがデフォルトになると思いますが、これは公式にセッション/新規であるため、私の提案を試してみてください.それが違いを生むかどうか見てください?

于 2012-11-12T00:36:19.503 に答える
0

「レーキルート」を実行すると何が得られますか?それをコピーしてもらえますか?また、フォームのブラウザによってレンダリングされたHTMLコードをコピーできますか?

于 2012-11-12T00:58:08.420 に答える