Ошибка маршрутизации при вызове «нового» метода с вложенным ресурсом - PullRequest
2 голосов
/ 21 декабря 2011

У меня есть два вложенных ресурса:

class Customer < ActiveRecord::Base
  has_many :locations, :dependent => :destroy
  accepts_nested_attributes_for :locations
end

class Location < ActiveRecord::Base
  belongs_to :customer
end

В route.rb у меня

resources :customers do
  resources :locations
end    

Код для создания нового местоположения:

<%= link_to image_tag("add.png"), new_customer_location_path(@customer), :class => "button" %>

Когда я пытаюсь создать новое местоположение, я получаю следующую ошибку

Ошибка маршрутизации

Не найдено ни одного маршрута {: action => «show»,: controller => «location»,: customer_id => #,: id => #}

Почему: вместо "new" вызывается action => "show"?

вывод рейковых маршрутов

customer_locations     GET    /customers/:customer_id/locations(.:format)                  {:action=>"index", :controller=>"locations"}
                       POST   /customers/:customer_id/locations(.:format)                  {:action=>"create", :controller=>"locations"}
new_customer_location  GET    /customers/:customer_id/locations/new(.:format)              {:action=>"new", :controller=>"locations"}
edit_customer_location GET    /customers/:customer_id/locations/:id/edit(.:format)         {:action=>"edit", :controller=>"locations"}
customer_location      GET    /customers/:customer_id/locations/:id(.:format)              {:action=>"show", :controller=>"locations"}
                       PUT    /customers/:customer_id/locations/:id(.:format)              {:action=>"update", :controller=>"locations"}
                       DELETE /customers/:customer_id/locations/:id(.:format)              {:action=>"destroy", :controller=>"locations"}

Код контроллера для нового действия в location_controller.rb:

before_filter :find_customer

def new
  @location = @customer.locations.new

  respond_to do |format|
    format.html # new.html.erb
    format.json { render json: @location }
  end
end

Я не понимаю ошибку, у меня есть еще два вложенных ресурса, которые работают правильно, проверили весь код, и кажется, точно так же ... Есть ли вероятность, что слово «местоположение» является зарезервированным словом, или что-то упущено / неверно?

Ответы [ 2 ]

1 голос
/ 22 декабря 2011

Хорошо, обнаружена проблема.

Внутри приложения / views / location / _form.html.erb, которое вызывается app / views / location / new.html.erb

, былоссылка с неправильным помощником пути:

    <%= link_to "Cancel", customer_location_path(@customer,@location) %>

Я изменил ее на

    <%= link_to "Cancel", customer_path(@customer) %>

и теперь все работает

0 голосов
/ 21 декабря 2011

Попробуйте поставить закрывающую скобку на image_tag.

<%= link_to image_tag("add.png"), new_customer_location_path(@customer), :class => "button" %>
...