1

В моем приложении Rails У меня есть Images класса, который используется Store & Maker, я установил Images вверх как принадлежит к полиморфной ассоциации через imageable (после большинства стандартных документации и Railscasts), большинство из его работ, однако, когда я добавить кнопку возврата к изображению Я не уверен, что я на самом деле имел в виду, чтобы положить в для опций:Polymorphic_url назад неправильный путь

polymorphic_path(@imageable.images) 

не работает: image_image_image_image_image_path является результирующей брошена ошибкой , и различные различные комбинации ([@imageable, images]) и так далее не помогли. @imageable определенно указывает на правильный класс, хотя, если я оставлю его polymorphic_path(@imageable), он вернется к show для переданного объекта.

Я предполагаю, что неправильно понял, как я передаю объекты, но я не вижу, где.

Редактирование: просто для пояснения, назад Я имею в виду возврат к индексу изображений для объекта.

Редактировать: просто чтобы расширить то, что я пробовал, polymorphic_url возвращает ту же проблему. imageable_images_path не работает, так как это не :resource в routes.rb, [@imageable, images] возвращает images - это неопределенное.

Edit: Для того, чтобы сохранить это превращение в гиганта я добавлю соответствующие файлы в гов:

+0

Что вы подразумеваете под «обратной кнопкой» - закрытие изображения и возврат к контенту или переход к предыдущему изображению? – dax

+0

Извините, я уточню, что щелчок назад должен вернуть вас к индексу изображения. –

+0

Если вы хотите вернуться в индекс изображения, почему бы не использовать images_path напрямую? – Bigxiang

ответ

1

Wha т о polymorphic_url

Что-то вроде polymorphic_url(@imageable.images) или даже просто polymorphic_url(images) может работать

EDIT: Я думаю, что, может быть, проблема заключается в @imageable

по documentation:

# calls post_url(post) 
polymorphic_url(post) # => "http://example.com/posts/1" 
polymorphic_url([blog, post]) # => "http://example.com/blogs/1/posts/1" 
polymorphic_url([:admin, blog, post]) # => "http://example.com/admin/blogs/1/posts/1" 
polymorphic_url([user, :blog, post]) # => "http://example.com/users/1/blog/posts/1" 
polymorphic_url(Comment) # => "http://example.com/comments" 

Итак, когда вы проходите polymorphic_path(@imageable), и он дает вам соответствующую страницу показа, что делает потому что прохождение @imageable фактически передает конкретный экземпляр imageable - /stores/X/images/1 или /stores/X/images/2 и т. д.Если вы хотите, чтобы перейти к указателю, вы не хотите конкретного экземпляра imageable - вы только хотите images

Это проверялось, но попробуйте либо

polymorphic_path(store, :images)/polymorphic_url(store, :images)

или

polymorphic_path(@imageable, :action => 'index')

источник: https://stackoverflow.com/a/6205831/2128691

+0

Я пробовал как «polymorphic_url», так и «polymorphic_path». Я обновлю эту информацию. –

+0

Престижность вам, хороший сэр, вы не были на 100% там, но вы были довольно чертовски близки. Это фактически 'polymorphic_path ([@ imageable,: images])', поэтому сочетание нескольких вещей. –

+0

woo-hoo! рад, что у тебя это работает :) – dax

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