Ruby on rails Rails,字符串的两部分,一部分是文本,另一部分是附加变量。显示第一部分时出错 让我们考虑字符串:我的名字是{@ Ur..No.} 所以我需要检查并处理这部分{@user.name}中的错误。 错误可能是因为{user.name}用户对象未定义或{other_object.name} 或访问不属于用户表的属性。
您可以使用:Ruby on rails Rails,字符串的两部分,一部分是文本,另一部分是附加变量。显示第一部分时出错 让我们考虑字符串:我的名字是{@ Ur..No.} 所以我需要检查并处理这部分{@user.name}中的错误。 错误可能是因为{user.name}用户对象未定义或{other_object.name} 或访问不属于用户表的属性。,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,您可以使用: name = "#{object.name}" if object.respond_to?(:name) 如果对象不响应名称方法,它也会处理对象为nil的情况,nil将被分配给名称变量。您可以使用: name = "#{object.name}" if object.respond_to?(:name) 如果对象不响应name方法,它也会处理对象为nil的情况,nil将被分配给name变量。试试这个 "My name is #{@user.try(:name)}" TRY方法
name = "#{object.name}" if object.respond_to?(:name)
如果对象不响应名称方法,它也会处理对象为nil的情况,nil将被分配给名称变量。您可以使用:
name = "#{object.name}" if object.respond_to?(:name)
如果对象不响应name方法,它也会处理对象为nil的情况,nil将被分配给name变量。试试这个
"My name is #{@user.try(:name)}"
TRY方法将返回nil,如果它捕获到异常,它不会抛出任何错误 试试这个
"My name is #{@user.try(:name)}"
TRY方法将返回nil,如果它捕获到异常,它不会抛出任何错误 简单的错误处理
begin
string = "My name is {@user.name}"
rescue
string = "My name is not currently available"
end
简单的错误处理
begin
string = "My name is {@user.name}"
rescue
string = "My name is not currently available"
end
如果在nil对象上调用方法,则使用try将保存您,但如果@user对象没有name-method/attribute,则会出现异常。OP也要求处理这个案子,没有。。即使您尝试使用不可用的方法/属性,它也将返回为nil而不是抛出异常。不,它不会。试试3.试试:name.你也可以从屏幕上看到它。不过,Rails 4.0中的情况似乎会有所改变,我们将有两个方法:如果对象未实现该方法,则返回nil;如果@user对象没有name-method/attribute,则抛出NoMethodError,就像try在v3.2中所做的那样。如果调用nil对象上的方法,则使用try可以节省您的时间,但如果@user对象没有name-method/attribute,则会出现异常。OP也要求处理这个案子,没有。。即使您尝试使用不可用的方法/属性,它也将返回为nil而不是抛出异常。不,它不会。试试3.试试:name.你也可以从屏幕上看到它。不过,Rails 4.0中的情况似乎会有所改变,我们将有两个方法:如果对象未实现该方法,则返回nil,并像在v3.2中的try一样抛出NoMethodError。