【问题标题】:submit_tag without a button or image on rails在rails上没有按钮或图像的submit_tag
【发布时间】:2011-10-19 15:05:21
【问题描述】:

如何在表单中创建提交操作,而不是通过按钮(使用 submit_tag)而不是通过图像(image_submit_tag)?

我希望提交是像链接一样的可点击文本

谢谢

【问题讨论】:

    标签: ruby-on-rails-3 form-submit


    【解决方案1】:

    您需要使用 javascript 来执行此操作,因为链接是 GET 请求,而不是发布请求。所以假设你有以下代码:

    <%= form_for @post, :html => { :id => 'form' } do |f| %>
      <div class="field">
        <%= f.label :title %>
        <%= f.text_field :title %>
      </div>
      <div class="field">
        <%= f.label :body %>
        <%= f.text_area :body %>
      </div>
      <div class="actions">
        <a id="submit">Submit</a>
      </div>
    <% end %>
    

    然后您需要将以下内容添加到您的 javascript 文件之一。如果您使用的是

    $(function() {
      $('#submit').click(function() {
        $('#form').submit();
      });
    });
    

    也就是说,您可以将方法选项传递给 link_to 方法调用,以使用 POST。但是,仅在没有 javascript 的情况下执行此操作将不会提交任何表单数据。因此,您要么必须执行上述操作,要么使用 javascript 将数据添加到 url,就像在查询字符串中一样。

    【讨论】:

    • 谢谢。如果我将它添加到 application.js 中,它是否适用于所有视图、页面等?
    • 我的默认应用程序.js 包含在您的布局文件中。如果您看一下,请查看以下行:&lt;%= javascript_include_tag :defaults %&gt;,或类似的内容。默认符号包括各种 js 库,以及 application.js。如果您不在 Rails 3.1 中,您可能需要将 jQuery 添加到您的应用程序中才能使上述代码正常工作。
    【解决方案2】:

    这是我做到的一种方式:

    <a><%= submit_tag "Submit", class: "fake-button" %></a>
    

    然后,更改样式:

    .fake-button {
      padding: 0;
      border: none;
      display: inline;
    }
    

    所以它在技术上仍然是一个按钮,但看起来非常像一个链接。虽然有点 hacky :)

    【讨论】:

      猜你喜欢
      • 2015-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多