路由不工作
我不知道是什么原因,我的应用没有响应任何POST请求,这是一个非REST的URL。路由不工作
下面是我的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请求都正常工作。 我错过了什么吗?
您应该指定method
在html
块
=form_for(@setting), :url => "/settings/save_welcome_text", :html => { :method => :post } do |f|
工作很好,谢谢队友:) – Deepak 2011-04-27 10:03:35
的方法的使用获得并发布到您的routes.rb是从我的理解只适用于一个资源块内部成员或收集的路线。
当你这样做,否则你必须使用匹配,如果你只是想使其可用于后,那么你可以像这样指定它:
match "/save_welcome_text" => "settings#save_welcome_text", :via => :post
嗨,感谢您的答复。我检查了你的上述建议,但仍然给我一个错误。当我使用'match'/ save_welcome_text“=>”settings#save_welcome_text“'时,它可以工作。但它匹配所有我不想要的请求,我希望它只接受POST请求。 – Deepak 2011-04-27 09:54:51
你确定这个请求是真的通过邮件提交吗?如果你从没有:via语法的时候检查日志,它是否表示它是post?你有没有改变form_for像fl00r建议? – DanneManne 2011-04-27 10:00:42
你觉得为什么不工作呢?显示你如何试图称呼它。显示你的链接 – fl00r 2011-04-27 08:57:03
那么,我有一个“form_for(@setting),:url =>”/ settings/save_welcome_text“,:method =>:post”,它会抛出一个错误,表示没有路由存在。 – Deepak 2011-04-27 09:07:57
看看源代码并告诉我“