我收到一条奇怪的错误信息,没有给出太多信息,我很困惑。
undefined method ` ' for #<User::PhoneNumbersController:0x007ff2259fa320>
router.rb
namespace :user do
resources :phone_numbers, only: [:new, :create]
end
控制器/用户/ phone_numbers_controller.rb 的
class User::PhoneNumbersController < User::UserController
def new
@phonenumber = PhoneNumber.new
end
end
模型/ phone_number.rb 的
class PhoneNumber < ActiveRecord::Base
belongs_to :user
end
这一行失败了:@phonenumber = PhoneNumber.new
我的设计模式错了吗? 堆栈跟踪并没有多说......
感谢Max的回答
我的确“已经成为了受害的非破坏性空间角色”或NBSP。我在实例变量@phonenumber
左侧有一个。
答案 0 :(得分:9)
你已成为邪恶的non-breaking space character或其中一个堂兄弟(如头发空间)的牺牲品。
虽然明显相同,但Ruby解析器不会将非中断空格字符U+00A0
视为与普通U+0020
字符相同。 Ruby反而将其视为标识符。这就是为什么你得到undefined method ` '
。
打开编辑器中隐藏的角色,去寻找那些讨厌的NBSP。