从表单中删除子域

remove subdomain from form

我正在使用约束为我的应用程序中的页面设置子域

get '/', to: 'referal#new', constraints: { subdomain: 'keystrategy' }

它把我带到 keystrategy.[mypage]。此页面仅包含几行:

<%= form_for @referal, url: {action: "create", subdomain: false} do |f| %>
  <%= f.text_field :referer %>
  <input type="hidden" value="keystrategy">
 <%= f.submit "Valider" %>
<% end %>

但是当我尝试加载此页面时,出现以下错误:

No route matches {:action=>"create", :controller=>"referal", :subdomain=>"keystrategy"}

我错过了什么?我以为 subdomain: false 会阻止这个

使用此代码:

<%= form_for @referal, url: referal_url(subdomain: false) do |f| %>
  <%= f.text_field :referer %>
  <input type="hidden" value="keystrategy">
  <%= f.submit "Valider" %>
<% end %>

好的,所以我发现这与表单本身无关,而是因为路由。使用子域时,

生成的每个新路由
resources :whatever

假设您在当前的子域中这样做。因此,如果 subdomain.yousite.com 指向包含表单的视图,则表单将由 subdomain.yoursite.com/whatevers 作为 POST 请求处理。

因此,您必须确保此路由包含您的子域。在您的 routes.rb 文件中,添加以下行:

get '/', to: 'whatever#new', constraints: { subdomain: 'yoursubdomain' }
post '/whatevers', to: 'whatever#create', constraints: { subdomain: 'yoursubdomain' }

您的表单应如下所示:

<%= form_for @referal do |f| %>
    <%= f.text_field :referer %>
    <input name="referal-type" type="hidden" value="keystrategy">
    <%= f.submit "Valider" %>
<% end %>

一切就绪。