正如你在我的previous問題中所說的那樣,我試圖發出一個post請求。Ruby on rails使用post方法重定向到另一個視圖
這裏是我的登錄視圖
<%= 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
方法,我寫了下面的代碼在我的崗位方法
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
但是,當我在登錄頁面輸入用戶名和密碼並點擊提交按鈕,它會轉到這個帖子的方法,並給我"Missing template authorization/check_validity"
錯誤。我在我的routes.rb
中包含了post "authorization/check_validity"
。看來我錯過了這裏非常基本的東西:(請讓我知道爲什麼它不能重定向到我提到的路徑而不是尋找check_validity.html.erb
我記得當我們腳手架,並點擊新帖子並提交它,它重定向創建方法是一個post請求,然後自動重定向,以顯示方法是'get'.
它如何能夠理解它應該在創建後顯示?我試圖在這裏複製但失敗。請幫助
更新:我已經看到here和了解,我們不應該使用重定向的POST方法,但如何將我使用這個信息,去denied_acess_path
或display_command_list_path
從這個。方法
您確定您正在實施正確的控制器操作嗎? – nicholaides 2012-07-06 17:32:06
@nicholaides我發現我不應該使用重定向,控制器有'post'方法的'check_validity'動作,並在我的路由中添加了路由發佈「controller/check_validity'。 – user1455116 2012-07-06 17:35:39