2016-11-02 2 views
-1

У меня есть учебное пособие по созданию веб-приложения для размещения рекламы (с использованием Rails 4.2.6, но книга была написана о более старой версии); и идея создания действия - перенаправить пользователя на новую страницу добавления после ее создания. Предлагаемый код из книги выглядеть так:Redirect_to not working

def create 
    @ad = Ad.new(ad_params) 
    @ad.save 
    redirect_to "/ads/#{ @ad.id }" 
end 

К сожалению, он не перенаправляет в любом месте - пользователю получить stucked на ПОЗДРАВЛЯЮ-странице:

<h1>Ad created!</h1> 
view your ad <a href="ads/<%= @ad.id %>">here</a> 

В чем проблема в моем коде перенаправления ? В чем причина использования в одном месте # {@ object} -construction, а у другого - <% = @object%>?

+0

у вас есть маршрут, определенный для '/ объявления/# {@ ad.id}'? каков ваш результат для 'bundle exec rake routes ' grep/ads'? – sa77

+0

@ sa77, '~/mebay $ bundle exec rake routes | grep/ads объявления GET /ads(.:format) объявления # индекс POST /ads(.:формат) объявления # создать new_ad GET /ads/new(.:format) объявления # новый ad GET/ads /: id (.: format) ads # show ads_new POST /ads/new(.:format) ads # new ads_create POST /ads/create(.:format) ads # create GET /ads(.:format) объявления # индекс GET /ads/:id(.:format) ads # show' ну, в книгах ничего не говорится об определении нового маршрута. – crcerror

+0

это электронная книга? если да, можете ли вы вставить ссылку? – sa77

ответ

1

попробовать с помощью

def create 
    @ad = Ad.new(ad_params) 
    @ad.save 
    redirect_to ads_path(@ad) 
end 
+0

это сработало! Спасибо! – crcerror

+0

перенаправляет сейчас на ads_path (/ ads /) - есть ли способ перенаправления точно в /ads/@ad.id? – crcerror

+0

, если вы хотите, чтобы он отправил действие шоу, вы можете использовать redirect_to ad_path (@ad) –