无法在Rails

时间:2017-10-06 09:50:40

标签: ruby-on-rails routes

在我的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'方法。

1 个答案:

答案 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__} --------"

如果您正在调试,另一个好的做法是创建规范测试以验证控制器行为。