首页 > 解决方案 > 为什么这个 rails 6 视图没有激活 form-inline

问题描述

我有一个简单形式的 Rails 6 应用程序,在应用程序视图中使用 link_to 按钮时不会激活视图 html。这是应用程序视图,我尝试将 link_to 命令移动到正文中,但这并没有改变失败。

    <!DOCTYPE html>
<html>
  <head>
    <title>Mypantry</title>
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>

    <%=link_to 'Settings', setting_path %> | <%= link_to 'Groceries', mupcs_path %> | <%= link_to 'Stores', stores_path %> | <%= link_to 'Open Pickup List', shops_path %> | <%= link_to 'Shoping List', list_path %>
      
  </head>

  <body>
    <%= yield %>
  </body>
</html>

这是“设置”按钮调用的视图表单:

        <p id="notice"><%= notice %></p>
    <table>
    <tr>
    <td valign="top">
    <%= simple_form_for :search, url: setting_path, method: "GET", html: { class: 'form-inline' } do |f| %>
        <%= f.input :id, collection: @stores, label: false, prompt: "Store Options: Blank Store" %></td>
        <td>
        <%= f.collection_select :buyer, @buyers, :buyer, :buyer, prompt: "Blank Buyer" %>
        </td><td>
         <%= f.submit "Submit", class: "btn btn-primary" %>
    <% end %>
    </td>
    </tr></table>



<b>the buyer:&nbsp;</b>
<%= cookies.encrypted.permanent[:thebuyer] %>
<p>
<b>the store:&nbsp;</b> 
<% a = cookies.encrypted.permanent[:thestore_id] %>
<% if a.to_i > 0 %>
    <%= @stores[a.to_i - 1]["name"] %>
<% end %>

问题是,当 safari 从一个 link_to 项目更改为“设置”时,提交按钮在手动刷新表单之前不起作用。为什么必须手动刷新?

标签: ruby-on-railssafarisimple-form

解决方案


我偶然发现了一个使用 html 的替代链接。基本上,将:<%= link_to 'xxx', xxx_path %> 更改为:xxx

使用 target="self" 强制操作停留在同一个浏览器窗口/选项卡中但完全激活?form-inline 函数,以便提交按钮从一开始就起作用。


推荐阅读