2013-08-03 3 views
0

Я определил вложенных ресурсы этойКак использовать рубин на рельсах названных маршруты

resources :item, :only => [:create, :destroy, :update] do 
    resources :item_image, :only => [ :new, :create, :show , :destroy, :index] 
end 

И мои маршруты выглядеть следующим образом (выход реки маршрутов)

item_item_image_index GET /item/:item_id/item_image(.:format)  item_image#index 
        POST /item/:item_id/item_image(.:format)  item_image#create 
new_item_item_image GET /item/:item_id/item_image/new(.:format) item_image#new 
    item_item_image GET /item/:item_id/item_image/:id(.:format) item_image#show 
        DELETE /item/:item_id/item_image/:id(.:format) item_image#destroy 

Я думал, что первый столбец из вывод - это «именованные маршруты».

Я хочу показать путь к /item/:item_id/item_image(.:format) в одном из моих представлений.

item_item_image_index GET /item/:item_id/item_image(.:format)  item_image#index 

Я попытался это:

<%= link_to "users", item_item_image_index %> 

и также это

<%= link_to "users", item_images_path %> 

Ни работает

я получил "неопределенную локальную переменную или метод` item_images_path/item_item_image_index '" ошибка

ответ

1

вы должны попробовать:

<%= link_to "users", item_item_image_index_url(@item) %> 

или

<%= link_to "users", item_item_images_url(@item) %> 

или

<%= link_to "users", item_item_image_index_path(@item) %> 

или

<%= link_to "users", item_item_images_path(@item) %> 

не забудьте URL нужен: item_id, следовательно, вам нужно передать предмет в качестве аргумента.

Фактически, вам не следует называть эту модель «ItemImage». У предмета есть изображения, вот что вам нужно знать. вы получите лучшие вспомогательные имена, как «item_images_url»

+0

спасибо, что работает. Еще один вопрос, почему маршруты POST DELETE на моих маршрутах не получают автоматически сгенерированное имя пути? – GingerJim

+0

Не думай, понял это сам. все они имеют один и тот же путь, только различие - это HTTP-глаголы. – GingerJim

+0

точно. Помощники URL хороши специально для якорных тегов. Методы POST/PUT/DELETE обычно включают форму, в которой вам необходимо указать (в зависимости от помощников формы) HTTP-глагол вместе с URL-адресом. (Я предполагаю, что вы не используете ужасные Rails js hacks для якорных тегов с: remote => true) – ChuckE

1
item_item_image_index GET /item/:item_id/item_image(.:format)  item_image#index 

В этом маршруте item_item_image_index, вам нужно item_id в URL

позволяет иметь объект модели Item названный как @item, то вашу ссылку будет

<%= link_to 'users', item_item_image_index_path(@item) %> 

Здесь Вам нужно добавить «_path» после того, как помощник по маршруту «item_item_image_index». Передавая переменную @item, она принимает @item.id как item_id и завершает URL-адрес ссылки.

Смежные вопросы