在我的Rails代码库中,有一个特定方法的操作调用之前,但我无法调用它。
示例代码:
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
当调用update方法时,由于之前的操作 - 调用set_country。
但是当控制达到具有'book_my_ride'的IF条件时 - 系统不会为book_my_ride调用'set_country'方法。
答案 0 :(得分:0)
您的book_my_ride方法正在执行puts语句,输出为nil。所以我认为正在发生的事情就是你的逻辑真的在说
if true && nil
do something
end
这永远不会返回true,因此执行无法继续。尝试从该方法添加返回,并查看执行路径是否继续正确。例如:
def book_my_ride
puts "Inside BookMyRide - #{@country}"
return 'Called book_my_ride'
end
我不确定那些声明是什么 - 如果它们只是用于调试,我会尝试使用
Rails.logger.info "debug statement here ..."
或使用return而不是puts
return "Called #{__method__} --------"
如果您正在调试,另一个好的做法是创建规范测试以验证控制器行为。