Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3-新控制器动作路线_Ruby On Rails_Ruby On Rails 3_Rails Routing - Fatal编程技术网

Ruby on rails Rails 3-新控制器动作路线

Ruby on rails Rails 3-新控制器动作路线,ruby-on-rails,ruby-on-rails-3,rails-routing,Ruby On Rails,Ruby On Rails 3,Rails Routing,我有一个在线培训的应用程序,每个在线培训都有几个章节。我不想只为培训章节创建下一个控制器。我想在培训控制员方面有一个新的动作,可以称之为章节。然后我想要这样的URL: /培训/1/章/3 /控制员/id培训/行动/id章节 您能帮助我如何设置routes.rb以实现此行为吗?我试了很多东西,但还是坏了 提前谢谢你 Petr您可以将路线定义为: resources :trainings do get 'chapter/:chapter_id', action: :chapter, as: :

我有一个在线培训的应用程序,每个在线培训都有几个章节。我不想只为培训章节创建下一个控制器。我想在培训控制员方面有一个新的动作,可以称之为章节。然后我想要这样的URL:

/培训/1/章/3

/控制员/id培训/行动/id章节

您能帮助我如何设置routes.rb以实现此行为吗?我试了很多东西,但还是坏了

提前谢谢你


Petr

您可以将路线定义为:

resources :trainings do 
  get 'chapter/:chapter_id', action: :chapter, as: :training_chapter, constraints: { chapter_id: /\d+/ }
end
然后,在您的“控制器”rb中:

行get'chapter/:chapter\u id',action::chapter,as:training\u chapter,constraints:{chapter\u id://\d+/},定义了格式为training/:id/chapter/:chapter\u id的get路径,该路径在TrainingController中执行chapter操作

此路由的名称是由as::training\u chapter定义的training\u chapter,因此您可以使用命名的路由帮助程序,例如training\u chapter\u trainings\u path


最后一个选项constraints://\d+/限制了chapter\u id可以保存的值,根据这些值执行此路由。因此,对/trainings/1/chapter/1的get请求会执行chapter操作,而/trainings/1/chapter/a不会执行,因为chapter\u id的值a是非数字的。

您可以将路由定义为:

resources :trainings do 
  get 'chapter/:chapter_id', action: :chapter, as: :training_chapter, constraints: { chapter_id: /\d+/ }
end
然后,在您的“控制器”rb中:

行get'chapter/:chapter\u id',action::chapter,as:training\u chapter,constraints:{chapter\u id://\d+/},定义了格式为training/:id/chapter/:chapter\u id的get路径,该路径在TrainingController中执行chapter操作

此路由的名称是由as::training\u chapter定义的training\u chapter,因此您可以使用命名的路由帮助程序,例如training\u chapter\u trainings\u path


最后一个选项constraints://\d+/限制了chapter\u id可以保存的值,根据这些值执行此路由。因此,对/trainings/1/chapter/1的get请求会执行chapter操作,而/trainings/1/chapter/a则不会执行,因为chapter\u id的值a是非数字的。

我认为您需要的是:

match '/trainings/:training_id/chapter/:chapter_id' => 'trainings#chapter', :as => 'chapter_training'
app/controllers/trainings\u controller.rb

def chapter
end

我想这就是你想要的:

match '/trainings/:training_id/chapter/:chapter_id' => 'trainings#chapter', :as => 'chapter_training'
app/controllers/trainings\u controller.rb

def chapter
end