2014-08-02 3 views
0

У меня есть photos#new с этим путеммаршрут проблемы с рельсами

/:profile_name/photos/new(.:format)

Я хочу, чтобы создать маршрут к /photos/upload для этого пути выше (photos#new).

Я пытаюсь это:

scope '/photos/upload' do 
scope ':profile_name' do 
    resources :photos, only: [:new, :create], as: 'upload_photo' 
end 
end 

, но я получаю сообщение об ошибке:

undefined method `upload_photo_path' 

, как я могу сделать этот маршрут?

ответ

3

Ни один из этих scope s не имеет значения.

Просто определите маршрут.

get "photos/upload" => "photos#new" 
+0

показать эту ошибку: 'Нет маршрутные спичек {: действие =>«Индекс»,: контроллер =>«фотографии», : format => nil,: profile_name => nil} отсутствуют необходимые ключи: [: profile_name] ' –

0

Заменить этот

scope '/photos/upload' do 
scope ':profile_name' do 
    resources :photos, only: [:new, :create], as: 'upload_photo' 
end 
end 

с этим

scope ':profile_name' do 
    resources :photos, only: [:new, :create] 
end 

get "photos/upload" => "photos#new", as: 'upload_photo' 
0

ресурсов

В дополнение к ответам уже, вы должны знать, что Rails работает с resourceful routing structure. Хотя это не является прямым фикс, он должен дать вам лучшее представление о том, как строить свои маршруты:

enter image description here

Просто каждый маршрут вы создаете должны быть привязаны к «ресурс» , Каждый «ресурс», по существу, способ для вас, чтобы строить модели объектов - как правило, контроллер, хотя вы можете использовать различные контроллеры для создания различных объектов модели

-

Маршруты

Это означает, что ваш photos ресурс должен быть основным направлением ваших маршрутов; если вы хотите добавить дополнительный маршрут или изменить название одного из изобретательных маршрутов, вы должны сделать это вокруг в resources директиву:

#config/routes.rb 
resources :photos, path_names: { new: "upload" } #-> domain.com/photos/upload 

Вы можете видеть, что я использовал ресурс path_names argument as per this documentation

области, как правило, используются, если у вас есть модули или контроллеры на основе подкаталогов (они предоставляют другой уровень вашим маршрутам). И если вы хотите добавить дополнительные маршруты к вашей resources директивы, вы можете использовать следующее:

#config/routes.rb 
resources :photos do 
    collection do 
     get :upload, action: new 
    end 
end 
Смежные вопросы