Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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 脚手架生成的示例使用ActionController::UrlGenerationError失败_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 脚手架生成的示例使用ActionController::UrlGenerationError失败

Ruby on rails 脚手架生成的示例使用ActionController::UrlGenerationError失败,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有一个奇怪的问题,就是某些型号仅仅因为它们的名字(或者在我看来是这样)而不能很好地使用rails。我试着用一个简单的脚手架来重现这个问题(我以前一直都是手工做的),因为我认为这样会减少用户出错的机会,当然我也遇到了同样的问题。我正在使用Rails 4.2.3和ruby 2.2.2p95(ubuntu) 尝试此操作(从新应用中): 现在转到索引()并单击“新建托儿所”。您将得到一个错误: ActionController::UrlGenerationError in Nurseries#new

我有一个奇怪的问题,就是某些型号仅仅因为它们的名字(或者在我看来是这样)而不能很好地使用rails。我试着用一个简单的脚手架来重现这个问题(我以前一直都是手工做的),因为我认为这样会减少用户出错的机会,当然我也遇到了同样的问题。我正在使用Rails 4.2.3和ruby 2.2.2p95(ubuntu)

尝试此操作(从新应用中):

现在转到索引()并单击“新建托儿所”。您将得到一个错误:

ActionController::UrlGenerationError in Nurseries#new 
但是如果我尝试去创造其他的东西,比如说

rails generate scaffold Manuscript title:string
它只是工作

这是我的(自动生成的)路由文件:

Rails.application.routes.draw do
  resources :manuscripts
  resources :nurseries
  resources :products
这是为托儿所生成的部分表单(…/nurries/_form.html.erb):


链接到方法导致的错误

 <%= link_to 'New Nurserie', new_nurserie_path %>

然后是new.html.erb

<%= render 'form' %>

和_form.html.erb

<%= form_for(@nurserie) do |f| %>
 --logic
<% end %>

--逻辑

我有一个预感,经过测试证明是正确的:) Rails(或者只是其中的一部分,可能是负责脚手架的部分)不知道如何正确地将托儿所多元化

您可以通过指定屈折变化规则来解决此问题:

# config/initializers/inflections.rb
ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.irregular 'nursery', 'nurseries'
end
破坏苗圃脚手架,然后对其进行再生,这样它就可以工作了

作为一般的经验法则,当只针对特定的控制器/模型/等名称出现错误时,您应该查看其变化


特殊单词的复数化是基于框架中硬编码的列表进行的。虽然这个列表很大,但它并不是100%完整。

rake routes | grep Turry的输出是什么??应该还有更多您遗漏的错误。请把它寄出去。@Emu什么也没有。老实说。@Pavan我已经把它贴在底部了。它似乎在抱怨缺少“id”字段,但在这个阶段,我认为它没有一个(它还没有被保存,对吗?),所以我不明白问题是什么。我在我的项目中测试了你的代码,我也收到了相同的错误。非常奇怪。呃,我不知道你的意思是什么,但是谢谢你的尝试。您是否尝试按照我的说明创建示例项目(如上)?修复了它,太棒了!非常感谢。我也这么想,我已经更新了我的答案。这不是一个bug。Rails(或者很可能只是其中的一部分)不知道如何正确地将“托儿所”多元化。
<%= render 'form' %>
<%= form_for(@nurserie) do |f| %>
 --logic
<% end %>
# config/initializers/inflections.rb
ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.irregular 'nursery', 'nurseries'
end