【问题标题】: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,允许您的应用程序对用户会话等进行身份验证。

    【讨论】:

      猜你喜欢
      • 2016-11-20
      • 2016-04-21
      • 2022-12-13
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 1970-01-01
      • 2019-11-29
      • 1970-01-01
      相关资源
      最近更新 更多