如何为rails生成的路由命名?

时间:2015-11-09 13:55:01

标签: ruby-on-rails ruby

routes.rb: resource :my_model

上使用以下内容时

我得到一些自动生成的路线。他们中的一些人有一个名字(就像用#39;关键字手动定义它们一样),但有些人不知道......所以我怎么能给他们起名字呢? 或者它可能是一个提示'通过铁路给我,我不应该使用这些路线?

4 个答案:

答案 0 :(得分:1)

当你说“名字”时,你指的是什么,当你运行耙路线时,前缀是什么?许多HTTP请求(即补丁,放置,删除)由控制器处理,然后如果您使用的是javascript,则会重定向到另一个路径或更改当前页面的DOM,因此它们不会有与它们关联的前缀,因为这些请求没有关联的视图。

答案 1 :(得分:0)

使用单一资源时,除索引路由外,将生成所有CRUD路由。如果您希望按预期使用它们,则不需要这些路径的名称。你打算使用这些路线是什么意思?

根据文档:

  

一条独特的资源丰富的路线会产生这些帮助:

     

new_resourceName_path返回/ re / new
  edit_geocoder_path返回/地理编码器/编辑
  geocoder_path返回/地理编码器

请通过以下方式发布您的输出:bundle exec rake routes 您会注意到show和create controller actions共享相同的路径,唯一的区别是一个需要POST请求而另一个需要一个GET请求。这是Rails提供的一些魔力,允许您使用映射到不同操作的类似命名路由。

答案 2 :(得分:0)

尝试使用resources代替resource。如果您需要PATCHPUTDELETE的帮助程序,只需使用show操作的帮助程序(您将从resources获取)和specify the HTTP method with method:

第二个答案here对您的resource电话有一个不错的解释。

答案 3 :(得分:0)

这些路由期望一个不同的请求方法(这意味着请求中有额外的数据),并且不需要单独的名称,只需使用泛型global_preferences_path,例如 - 在链接中为不显眼的js设置方法:

<%= link_to 'Set preference', global_preferences_path(some_parameter:'foo'),
        confirm:'Are you sure?', method: :put %>

或使用html表格