即使资源是复数,Rails 3路由也会将_index附加到路由名称

时间:2013-03-20 11:23:32

标签: ruby-on-rails-3 routing

我有以下路线:

routes.rb中:

  namespace :admin do
    #...
    resources :carousel_images
  end

控制器:

def new
    @admin_carousel_image = CarouselImages.new
    #...

在视图中,我render 'form'

<%= form_for [:admin, @admin_carousel_image] do |f| %>
  <%= f.error_notification %>

  <div class="form-inputs">
  </div>

  <div class="form-actions">
    <%= f.button :submit %>
  </div>
<% end %>

型号:

class Admin::CarouselImage < ActiveRecord::Base
  attr_accessible :image
  mount_uploader :image, CarouselUploader
end

当我访问/admin/carousel_images/new时,我得到了

  

Admin / carousel_images中的NoMethodError #new

     

显示   /home/pinouchon/code/sharewizz/webapp/app/views/admin/carousel_images/_form.html.erb   第1行引发的地方:

     

未定义的方法`admin_carousel_images_index_path'for   #&LT;#:0xdfe45a4&GT;

我在路径wasn't appended when the resource is plural中找到了“_index”。为什么它会附加在我的案例中?

2 个答案:

答案 0 :(得分:0)

有时,铁轨无法弄清楚如何复数或检测复数。您尝试过打折机吗?我有一个类似的案例,并为我工作。

ActiveSupport::Inflector.inflections(:en) do |inflect|
   inflect.irregular 'carousel_image', 'carousel_images'
end

顺便说一句,我正在使用Rails 5.1。

答案 1 :(得分:-1)

更改以下内容并尝试:

def new
  @admin_carousel_image = Admin::CarouselImage.new #CarouselImage is your model name here. It should be singular.
  #...
end

在视图中,如果您要从form

呈现index.html.erb

你应该有以下内容:

<%= render 'form' %>

index文件的顺序应为app/view/admin/carousel_images/index

此处路径文件在carousel_images文件夹中找到index.html.erb并呈现表单。