【问题标题】:Form without action Ruby on Rails没有动作的表单 Ruby on Rails
【发布时间】:2013-10-10 01:51:58
【问题描述】:

我最近一直在使用 Ruby on Rails,但遇到了一个我无法弄清楚的问题。我需要创建一堆不起作用的表单模型。那就是他们应该有提交按钮,但它不应该在被点击时做任何事情。通常使用 html 我会做一些类似的事情

<form action="#">
</form>

尝试将其转换为使用 Rails 表单助手,我做了以下操作

<%= form_tag "#" do %>
    <%= label_tag :username, "Username: " %>
    <%= text_field_tag :username %>
    <br />
    <%= label_tag :password, "Password: " %>
    <%= password_field_tag :password %>
    <br />
    <%= submit_tag "Login" %>
<% end %>

这会生成一个类似于我想要实现的表单,但是当单击提交按钮时,它会尝试通过 post 访问 /#,这不是所需的结果。目前我能想到的唯一方法是设置按钮的禁用属性,但是有更好的方法吗?

【问题讨论】:

    标签: ruby-on-rails forms


    【解决方案1】:

    很遗憾,这无法通过表单助手实现。定义 form_forform_tag 需要对表单执行操作。你可以设置

    :action => "#" 
    

    但这需要在路由中包含动作 -> 有一个带有动作的控制器 -> 再次渲染一些页面。

    但是,您可以在使用 javascript 加载后操作表单(请记住将 :remote 设置为 true - )。或者,如果您坚持使用表单助手 - 将 submit_tag 替换为 button_tag

     <%= button_tag "Login", :type => 'button'%>
    

    【讨论】:

    • 这行得通,谢谢。虽然发布的两个答案都是正确的,但这个答案更详细地说明了为什么我所做的事情不起作用,这就是我选择它的原因。
    【解决方案2】:

    试试

    <% form_tag "#", :onSubmit => "return false" do %>
    

    【讨论】:

      【解决方案3】:

      您是否尝试过使用button_tag 而不是submit_tag?见here。只要确保你不使用默认值,否则你会回到你开始的地方。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-12
        • 2023-04-02
        • 2010-11-04
        相关资源
        最近更新 更多