我想修改对象中的值。但是,修改后的路由无法正常工作。
#routes
root 'freelancers#index'
get 'new' => 'freelancers#new'
post 'category' => 'freelancers#category'
get 'video' => 'freelancers#video'
get 'video/show/:id' => 'freelancers#video_show'
get 'video/new' => 'freelancers#video_new'
post 'video/create' => 'freelancers#video_create'
get 'video/:id/edit' => 'freelancers#video_edit'
patch 'video/show/:id/update' => 'freelancers#video_update'
get 'design' => 'freelancers#design'
表格代码:
<%= form_for(@video, :html => { :multipart => true, :id => @video.id, :url => '/video/show/:id/update' }, method: :patch ) do |f| %>
我希望输出/video/show/3/update,但实际输出是video。
1条答案
按热度按时间efzxgjgh1#
快捷方式:
更改此行:
收件人:
这将创建
update_video_path
作为应用程序中的命名助手。你将能够使用它:您可以查看文档以了解更多信息。
更好的方法:
您可能需要重构路由和控制器。当您的控制器覆盖一个资源时,这是一个很好的做法。在你的情况下,你似乎需要至少两个控制器:
FreelancersController
和VideosController
,videos
资源应该嵌套在freelancers
中。例如,它可能看起来像这样:
我在示例中保留了
design
和category
,但这些路由可能也需要单独的控制器。这样比较好,因为:
1.路由变得更容易理解和支持
1.每个控制器只负责一个资源
1.你得到了一堆路径和URL助手,而无需额外的工作
1.您的应用程序遵循以下约定
当然,如果您需要定制应用程序URL,Rails为您提供了方法,但在大多数情况下,遵循约定更好。
您可以在文档中找到更多信息。