【问题标题】:Make a submit button link to another page将提交按钮链接到另一个页面
【发布时间】:2016-02-01 20:21:58
【问题描述】:
我正在使用嵌入式红宝石。
所以我有代码:
<%= f.submit "Log in", class: "btn btn-primary" %>
我想在提交输入到文本字段中的信息时将此按钮链接到另一个页面。这可能吗?
如果您需要任何其他信息,请告诉我。谢谢
【问题讨论】:
标签:
ruby-on-rails
ruby
button
hyperlink
erb
【解决方案1】:
表单提交到的控制器方法应该包含一个redirect_towhatever_path。
见http://api.rubyonrails.org/classes/ActionController/Redirecting.html
redirect_to(options = {}, response_status = {})
例子:
redirect_to action: "show", id: 5
redirect_to post
redirect_to "http://www.rubyonrails.org"
redirect_to "/images/screenshot.jpg"
redirect_to articles_url
redirect_to :back
redirect_to proc { edit_post_url(@post) }
【解决方案2】:
我想在提交输入到文本字段中的信息时将此按钮链接到另一个页面
是的,但你必须小心你的术语。
“提交”的不是按钮,而是表单。
HTML 表单将其数据发送到“动作”:
<form action="url/for/action" method="" />
</form>
此“操作”是将处理数据/请求的 URL。
在每种服务器端语言/框架中,都有处理来自 HTML 的入站数据的功能。为了重定向到另一个 URL,您必须首先确保您正确处理数据:
#app/controllers/sessions_controller.rb
class SessionsController < ApplicationController
def create
# manage request here
end
end
只有在请求被处理之后,您才可以“重定向”。
即便如此,您也不是标准意义上的重定向,而是从服务器调用新请求 - 将浏览器带到新资源。
所以你可能会得到以下结果:
#app/controllers/sessions_controller.rb
class SessionsController < ApplicationController
def create
if [[conditions for login]]
redirect_to [[path]]
else
redirect_to [[path]]
end
end
end
redirect 实际上是您的浏览器使用相应的[[path]] 打开一个新请求。该请求将填充session,允许您的应用程序对用户会话等进行身份验证。