正如你们中的一个人在我之前的问题中所说的那样,我试图提出一个帖子请求。
这是我的登录视图
<%= 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
但是当我在登录页面输入用户名和密码并单击提交按钮时,它会转到此发布方法并给我"Missing template authorization/check_validity"
错误。我包括post "authorization/check_validity"
在我的routes.rb
. 看来我在这里遗漏了一些非常基本的东西:(。请让我知道为什么它不能重定向到我提到的路径而不是寻找check_validity.html.erb
我记得当我们脚手架时,点击新帖子并提交它,它重定向到创建方法,这是一个帖子请求,然后自动重定向到显示方法,它是'get'.
如何理解创建后它应该去“显示”的? 我试图在这里复制它但失败了。请帮忙。
更新:我在这里看到并理解我们不应该在 POST 方法中使用重定向。但是我将如何使用这些信息并去denied_acess_path
或display_command_list_path
来自这个check_validity
方法