自己创建了一个rails 工程,生成了一个叫note的脚手架。
现在我想要这个应用能够响应 根目录请求“/“ 所以在routes.rb下写如下代码:
root :to=> 'notes#index' , :as =>'notes'
这里我给了 root函数一个 :as参数,是由于我对root函数的不理解,在一本书上看到了这个函数,找葫芦画瓢的写了这段代码。
然后“/” 根目录果然得到了响应,但是在create一条note时,发现note根本没有插入到数据库,查看网页源代码,发现生成的表单指向根目录,而不是应该的
指向的“/notes/”,_form.html.erb模板中 <%= form_for(@note) do |f| %> 用来生成模板,而这个函数应该调用了notes_path函数用来生成路径,而notes_path函数,原来
是由 resouces: notes 这句生成的,它返回 /notes 但是由于在root函数中指定了 :as 参数, 他同时创建了两个路径 notes_path 和 notes_url ,这两个路径指向了“/” 路径,
覆盖了resouces语句对它们的定义。
所以<%= form_for(@note) do |f| %> 会生成一个指向根目录的表单。
我这里猜测, 在控制器程序中, format.html 和 redirect_to @note 这些代码,都应该隐性的调用了Helper 类生成的路径函数。
关于 redirect_to @note 这个方法调用: