有没有办法在 Ruby on Rails routes.rb 中定义没有“/new”的新操作路径?

Posted

技术标签:

【中文标题】有没有办法在 Ruby on Rails routes.rb 中定义没有“/new”的新操作路径?【英文标题】:Is there a way to define path of new action without '/new' in Ruby on Rails routes.rb? 【发布时间】:2021-12-21 06:30:48 【问题描述】:

有没有办法在 Ruby on Rails routes.rb 中通过编写 resources 来定义不带“/new”的新操作路径?

我想将/p/e/:article_id 的页面定义为popular/contacts#new 操作。

然后,我在下面写了。

namespace :popular, path: 'p' do
  resources :contacts, only: [:new], path: 'e/:article_id'
end

但是,上面的结果是这样的。

new_popular_contact GET   /p/e/:article_id/new(.:format)    popular/contacts#new

如果可能的话,我想使用resources,但是我是否只能使用get而不是resources

namespace :popular, path: 'p' do
  get '/e/:article_id' => 'contacts#new'
end

谢谢

【问题讨论】:

@DaveNewton 再看一遍——ID是文章的,不是联系人的。 @TomLord 啊,对——完全误读了。 你找错树了。而不是将e/:article_id 路由到新操作,您实际上应该在显示操作上放置一个表单。当然它是可能的,但它是一个简单问题的古怪而令人惊讶的解决方案。 new 操作仅作为显示表单的一种方式存在 - 如果您在显示操作上有一个表单,则不需要。 【参考方案1】:

您可以更改路径名,如下所示:

scope(path_names:  new: 'neu', edit: 'bearbeiten' ) do
  resources :categories, path: 'kategorien'
end

参考:https://guides.rubyonrails.org/routing.html#translated-paths

【讨论】:

也可以直接在resources方法上设置。见guides.rubyonrails.org/…

以上是关于有没有办法在 Ruby on Rails routes.rb 中定义没有“/new”的新操作路径?的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails 路由解析

2020ruby和ruby on rails想说再爱你不容易:安装rails失败解决办法

Ruby on Rails 参数数量错误(给定 0 预期 1)

ruby on rails Heroku 迁移错误

Ruby on Rails:嵌套命名范围

Ruby on Rails URL 格式