URL路由
当添加一条新的路由资源到routes.rb
中:
1 | resources testapp |
那么rails会生成如下7中url
1 | [root@hadoop0 config]# rake routes |
上述表格中的左侧一列是可以在
views
中或者controller
中使用引用url的助记符,例如可以使用redirect testapp2_path
代表重定向到/testapp2
这个url上。 后面的testapp2s#create
代表的是哪个控制器的那个函数被调到处理该时间,在这个例子上就是testapp2s
的create
方法来处理GET
请求。
可以使用except
和only
来排除哪些action和保留哪些action,例如:
1 | resources :testapp, :only => [:index, :show] |
如果在构建的url中存在多个id的情况,可以使用param来制定id的名称,例如
1 | resources :task do |
会生成
/task/:id/detail/:id
的URL但是在controller进行url渲染的时候,不能生成正确的url信息,所以这个路由信息需要如下改动1 | resources :task ,param: :task_id do |
这次,将会生成
/task/:task_id/detail/:detail_id
这样的url,这样在controller进行渲染的时候可以渲染出正确url
PUT vs POST
在HTTP中POST
意味着创建一个新的对象,而PUT
意味着是更新该对象操作。
由于web的form中的submit按钮会自动使用POST
方法来推送消息,但是在实际场景中,form的数据可能是更新的情况,不应该使用POST
消息,而是使用PUT
消息,但是在form中的method即使修改为PUT
后,浏览器自动忽略该行为,并自动修改为GET
请求。
浏览器已经考虑了上述情况,做了工程实践上的妥协,添加如下标签后,该form的推送方法将使用PUT
方式:
1 | <input type='hidden' name='_method' value='PUT'> |
或者是slim的代码
1 | =f.text_field :name, type: 'hidden', name: '_method', value:'PUT' |
Related Issues not found
Please contact @warvyvr to initialize the comment