我不知道为什么我的应用不响应任何非REST网址的POST请求。
下面是我的routes.rb文件。
constraints(Subdomain) do
resources :invitations
resources :settings, :only => [:index, :create, :destroy]
scope "/settings" do
get "/departments" => "settings#departments"
get "/job_types" => "settings#job_types"
get "/industries" => "settings#industries"
get "/functional_areas" => "settings#functional_areas"
get "/managers" => "settings#managers"
get "/hrs_responsible" => "settings#hrs_responsible"
get "/welcome_text" => "settings#welcome_text"
post "/save_welcome_text" => "settings#save_welcome_text" <-------
end
end
在我的视图文件中,我有
=form_for(@setting), :url => "/settings/save_welcome_text", :method => :post do |f|
- All the form fields here.
- f.submit "Save"
此要点包含生成的HTML和相应的服务器日志。 https://gist.github.com/943984
当我点击提交时,我看到“路由错误”,表示不存在此类路由。从服务器日志中我可以嗅到请求是作为POST请求发送的。 但是,如果我将其从routes.rb文件中的“post”更改为“匹配”,则此方法有效。所有GET请求都可以正常工作。 我错过了什么吗?
答案 0 :(得分:1)
您应在method
块中指定html
=form_for(@setting), :url => "/settings/save_welcome_text", :html => { :method => :post } do |f|
答案 1 :(得分:0)
使用方法get和post在您的routes.rb是我所理解的,仅适用于资源块内的成员或收集路由。
当你这样做,否则你必须使用匹配,如果你只想让它可用于发布,那么你可以这样指定:
match "/save_welcome_text" => "settings#save_welcome_text", :via => :post