2016-04-09 4 views
0

В моих рельсах приложении У меня есть две моделей вложенных, Gameround> currentplayerRails «redirect_to» Вложенные маршруты с последней моделью

Gameround показан на play.html.erb, я также сделать currentplayers там. Когда текущий проигрыватель сделан, я хочу перенаправить пользователя на showplayer # show, но я не могу понять, как правильно маршрутизировать ссылку. Я пробовал все, что мог придумать.

Поэтому мне нужно ссылку, которая говорит:

Получить URL-адрес для thiscurrentGameround/ThiscurrentplayerIjustmade

Мой контроллер:

def createPlayerforUser 

     @latest_game_round = Gameround.order(created_at: :desc).first 
     @currentplayer = @latest_game_round.currentplayers.create({ 
      log_id: @current_user.id 
     }); 

     if @currentplayer.save 

      redirect_to url_for([@gameround, @currentplayer]) 
     end 

    end 

config.routes

resources :gamerounds do 
    resources :currentplayers 
    end 
    resources :gamesessions 
    # The priority is based upon order of creation: first created -> highest priority. 
    # See how all your routes lay out with "rake routes". 

# Artikkel, Alien liste 
    resources :expansions do 
    resources :aliens 
    end 

    resources :users 

    # You can have the root of your site routed with "root" 
    #root 'gamesessions#play' 
    root 'gamesessions#new' 
    #root 'application#show' 
    #root 'public#index' 
    get "signup", :to => "users#new" 
    get "login", :to => "sessions#login" 
    post "login_attempt", :to => "sessions#login_attempt" 
    get "logout", :to => "sessions#logout" 
    get "profile", :to => "sessions#profile" 
    get "setting", :to => "sessions#setting" 
    get "play", :to => "gamesessions#play" 
    get "wait", :to => "gamesessions#wait" 
    get "aliens", :to => "aliens#index" 
+0

Тип '$ рейк-маршруты' в терминале. Вы можете увидеть там названия маршрутов. В этом случае это будет 'redirect_to gamearound_currentplayer_path (@gamearound, @currentplayer)'. –

+0

Спасибо, что нашли время ответить :), но я пробовал это, и по какой-то причине он не работает. Я разместил сообщение об ошибке в комментарии ниже. – Candielope

ответ

1

Если вы запустить рейк-маршруты в срок inal, ваш список маршрутов должен включать один для отображения текущего игрока. Вы должны уметь использовать

redirect_to gameround_currentplayer_url(@latest_game_round, @current_player) 
+0

Спасибо за ответ! Я посмотрел на маршрутах и ​​попытался это, но это дает мне сообщение об ошибке: NoMethodError в GamesessionsController # игры неопределенный метод 'gameround_currentplayer» для # Candielope

+0

К сожалению, была опечатка в моем ответе, который Я исправил. – margo

+0

Спасибо! Мне все еще нужно было найти идентификатор текущего игрока, поэтому я сделал это. И теперь он отлично работает! Спасибо за твою помощь! +1 ' @currentPid = @ latest_game_round.currentplayers.find_by (log_id: @ current_user.id) \t \t \t redirect_to gameround_currentplayer_url (@latest_game_round, @currentPid)' – Candielope

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