Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails,字符串的两部分,一部分是文本,另一部分是附加变量。显示第一部分时出错 让我们考虑字符串:我的名字是{@ Ur..No.} 所以我需要检查并处理这部分{@user.name}中的错误。 错误可能是因为{user.name}用户对象未定义或{other_object.name} 或访问不属于用户表的属性。_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

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。