2014-02-18 3 views
0

У меня есть модель @miniatures и модель @lines, с которой можно связаться через модель @minilines.Rails redirect to assoc model after create

В @miniature show view У меня есть эта ссылка

<%= link_to "Add to product line", new_miniline_path(:miniature_id => @miniature) %> 

К в New @miniline form, который принимает :miniature_id из скрытого поля, как так

<%= f.hidden_field :miniature_id, :value => @miniature.id %> 

А затем вы выбираете нужный @line из выпадающего списка.

Все это работает. Я не могу работать, чтобы контроллер перенаправлял пользователя обратно к исходному @miniature после того, как действие create работает.

Это то, что я имею в моем new и create действия в контроллере

def new 
    @miniline = Miniline.new(@miniature) 
    @miniature = Miniature.find(params[:miniature_id]) 
    @lines = Line.all 
    end 

    def create 
    @miniline = Miniline.new(miniline_params) 
    if @miniline.save 
     flash[:success] = "Miniature added to product line" 
     redirect_to miniature_path(@miniature) 
    else 
     flash[:success] = "Did not work!!!" 
     render 'new' 
    end 
    end 

Я пробовал различные альтернативы miniature_path(@miniature) как простую @miniature и miniature_path(:miniature_id), но безрезультатно. Я подозреваю, что моя проблема связана с прохождением :miniature_id модели @minilines. Любая помощь очень ценится, поскольку я стучал головой в течение часа или двух.

+0

Что вы имеете в виду под «не работает»? Любые сообщения об ошибках? – fotanus

ответ

1
redirect_to miniature_path(@miniline.miniature) 

Предполагая, что у вас установлена ​​ассоциация.

Вы не установили @miniature в создании которых является то, что это не работает

Вы также можете сделать

redirect_to @miniline.miniature 
+0

Вот и все. Отлично. По какой-то причине я не думал, что вы можете использовать ассоциацию еще, потому что вы делаете это прямо там, но я думаю, что это глупо, потому что это экономит. Спасибо тонны! – Ossie