我正在使用约束为我的应用中的网页设置子域
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
会阻止此
答案 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 %>
你们都准备好了。