从表单中删除子域

时间:2016-03-29 12:42:10

标签: ruby-on-rails forms subdomain

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

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会阻止此

2 个答案:

答案 0 :(得分:0)

使用此代码:

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

答案 1 :(得分:0)

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

生成的每个新路由
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 %>

你们都准备好了。