2017-10-06 10 views
-1

私のRailsコードベースでは、特定のメソッドの前にアクションコールがありますが、呼び出すことができません。RubyOnRails + IF条件のbefore_actionメソッドを呼び出すことができません

サンプルコード: -

ControllerCode更新方法があるため、アクション前の、と呼ばれる

class HomeController < ApplicationController 
    before_action :set_country, only: [:index, :update] 
    def index 
    puts "Inside Index - #{@country}" 
    end 

    def update 
    if true && book_my_ride 
    puts "Inside Update - BookMyRide" 
    end 
    end 

    def book_my_ride 
    puts "Inside BookMyRide - #{@country}" 
    end 

    def set_country 
    @country = "SampleCountry" 
    end 
end 

- set_countryが呼び出されます。

しかし、コントロールが 'book_my_ride'を持つIF条件に達すると、システムはbook_my_rideに対して 'set_country'メソッドを呼び出しません。

+0

このシナリオで 'set_country'が2回呼び出されると思いますか?これはどのように動作するのではありません。 –

+0

@SergioTulentsev - あなたの意見がありました。誤って、before_actionにbook_my_rideを追加しました。 – Rubyist

答えて

0

book_my_rideメソッドはputs文を実行しています。出力はnilです。だから私はあなたのロジックが、本当にこれがtrueを返すことはありませんので、実行を継続することはできません

if true && nil 
    do something 
end 

が言っているされて何が起こっているかと思います。そのメソッドからの戻り値を追加して、実行パスが正しく続行されているかどうかを確認してください。例:

def book_my_ride 
    puts "Inside BookMyRide - #{@country}" 
    return 'Called book_my_ride' 
    end 

私はそれらのプットの文がのためにあるかわからない - 彼らはちょうどデバッグのためなら、私は

Rails.logger.info "debug statement here ..." 

またはその代わりプットの戻り値を使用するかを使用して試してみました

return "Called #{__method__} --------" 

デバッグしている場合は、コントローラの動作を確認するための仕様テストを作成することをお勧めします。

関連する問題