0

あなたの一人が私の前の質問で言ったように、私はポストリクエストをしようとしました。

これが私のログインビューです

<%= form_for :check_validity, :method => "post", :url => {:action => "check_validity"} do |f| %>            
              <%= f.label :username %>
                  <%= f.text_field :username %><br />
                  <%= f.label :password %>
                  <%= f.password_field (:password)%><br />
                  <%= f.submit "Submit"%>
                <% end%>

check_validityこれはメソッドなのでpost、postメソッドで以下のコードを記述しました

def check_validity
     @USER = params[:display_command_list][:username]
     @PASS = params[:display_command_list][:password]      
     @HOST = 'hostname'
     Net::SSH.start( @HOST, @USER, :password => @PASS ) do|ssh|
     @result = ssh.exec!("command")
     end
         if(@result =~ /somestring/)
          redirect_to display_command_list_path({:username => @USER, :password => @PASS})
         else
          redirect_to denied_access_path
         end
  end

しかし、ログインページにユーザー名とパスワードを入力して送信ボタンをクリックすると、このpostメソッドに移動して"Missing template authorization/check_validity"エラーが発生します。私は自分のに含めpost "authorization/check_validity"ましたroutes.rb。ここで非常に基本的なものが欠落しているようです:(。検索する代わりに、前述のパスにリダイレクトできない理由を教えてくださいcheck_validity.html.erb

スキャフォールディングし、新しい投稿をクリックして送信すると、投稿リクエストであるcreateメソッドにリダイレクトされ、自動的にshowメソッドにリダイレクトされ'get'.ます。作成後に「show」に移動する必要があることをどのように理解できますか。 ?ここでそれを複製しようとしましたが、失敗しました。助けてください。

更新:ここを見て、POSTメソッドでリダイレクトを使用するべきではないことを理解しました。しかし、この情報をどのように使用して、この方法に出入りするのでしょうdenied_acess_pathか。display_command_list_pathcheck_validity

4

1 に答える 1

0

私は問題を解決したと思います。

ログイン方法では、次のコードを使用しました

  def login

  respond_to  do |format|   
  format.html
  end

  end

Respond_to ブロックを削除すると、コードを実行できました。しかし、なぜこれが起こっているのかはまだわかりません。タグへの応答は、login.html.erb ではなく check_validity.html.erb を探していますか?

于 2012-07-06T18:04:41.753 に答える