Ruby on rails RubyonRails4将2个数据(名字、姓氏)组合成一个可用于我的页面的可用且可调用的方法
嗨,我是ruby和rails的新手,我需要一些关于表数据的帮助 这是数据库Ruby on rails RubyonRails4将2个数据(名字、姓氏)组合成一个可用于我的页面的可用且可调用的方法,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,嗨,我是ruby和rails的新手,我需要一些关于表数据的帮助 这是数据库 ID | first_name | last_name 1 jack silan 2 jim rosalez 3 pedro hatab 我可以在index.htmml.erb中使用此命令使它们显示得很好 <%= @user.first_name + " " + @user.first_name %> 现
ID | first_name | last_name
1 jack silan
2 jim rosalez
3 pedro hatab
我可以在index.htmml.erb中使用此命令使它们显示得很好
<%= @user.first_name + " " + @user.first_name %>
现在不起作用,因为它在rails 3中是可以接受的,但在rails 4中是去润滑的,并且说
未定义的错误意味着它不知道这一点
我还尝试在用户控制器中执行类似的操作
def index
@full = full_name
end
private
def full_name
first_name + " " + last_name
end
但是现在他又回来了
undefined local variable or method `first_name' for #<StatusesController:0x000000061f4608>
Extracted source (around line #79):
77
78 def full_name
79 first_name + " " + last_name
80
也使用这个
def fullname
"#{first_name last_name}"
end
在索引中使用此选项
<strong>name:<%= @full_name %></strong>
名称:
现在它没有显示任何错误,但问题是它没有显示任何内容您不必将
全名
作为私有方法,因此请删除私有
。
只需根据需要使用插值
在用户
模型中定义以下方法:
def fullname
"#{first_name} #{last_name}"
end
并在如下视图中使用它:
<strong>name:<%= @user.full_name %></strong>
名称:
您不必将全名
作为私有方法,因此请删除私有
。
只需根据需要使用插值
在用户
模型中定义以下方法:
def fullname
"#{first_name} #{last_name}"
end
并在如下视图中使用它:
<strong>name:<%= @user.full_name %></strong>
名称:
我假设你有用户模型,把方法放在用户模型外面private
like
class User < ActiveRecord::Base
#.... here some public methods
def full_name
first_name + " " + last_name
end
private
#.... here some another methods
end
class用户
我假设你有用户模型,把方法放在用户模型外面private
like
class User < ActiveRecord::Base
#.... here some public methods
def full_name
first_name + " " + last_name
end
private
#.... here some another methods
end
class用户
问题是控制器既没有名字
也没有姓
。它必须调用那些用户:
在状态控制器中
:
def full_name
@user.full_name
end
def full_name
"#{first_name} #{last_name}".strip
end
或者在视图中使用@user.full_name
另外,对于用户#全名
,这可能是一个更好的版本,在用户
:
def full_name
@user.full_name
end
def full_name
"#{first_name} #{last_name}".strip
end
问题是控制器既没有
名
也没有姓
。它必须调用那些用户:
在状态控制器中
:
def full_name
@user.full_name
end
def full_name
"#{first_name} #{last_name}".strip
end
或者在视图中使用@user.full_name
另外,对于用户#全名
,这可能是一个更好的版本,在用户
:
def full_name
@user.full_name
end
def full_name
"#{first_name} #{last_name}".strip
end
首先,我想将您的第一个版本的代码修改为 def fullname [first_name, last_name].join(' ').strip end def全名 [名字,姓氏].join('').strip 结束 因为,可能有一种情况,名字可以为空,在这种情况下,您的姓名字段显示为“Paul”,即姓氏前的空格。 为了避免这种情况,我们应该使用“strip” 第二,如果您将上述代码放在模型类中,您可以使用用户的活动记录作为控制器的实例变量来访问它。 i、 e @user=user.find(1) user\u fullname=@user.fullname
现在,user\u fullname将包含用户的全名。首先,我想将您的第一个版本的代码修改为 def fullname [first_name, last_name].join(' ').strip end def全名 [名字,姓氏].join('').strip 结束 因为,可能有一种情况,名字可以为空,在这种情况下,您的姓名字段显示为“Paul”,即姓氏前的空格。 为了避免这种情况,我们应该使用“strip” 第二,如果您将上述代码放在模型类中,您可以使用用户的活动记录作为控制器的实例变量来访问它。 i、 e @user=user.find(1) user\u fullname=@user.fullname 现在,user\u fullname将包含用户的全名。我使用这个:
def name
[first_name, last_name].reject(&:blank?).map(&:capitalize).join(' ')
end
我用这个:
def name
[first_name, last_name].reject(&:blank?).map(&:capitalize).join(' ')
end
“{first_name}{last_name}”Ithink@user1868185如果您要调用fullname-它会工作-检查更新我现在尝试了它,但现在的问题是它没有显示任何与其他内容类似的内容。@user1868185运行rails c(打开控制台),然后运行:User.last(将显示上一个用户),然后运行User.last.fullname(将向您显示,该方法正在工作)。如果如我所说,请再次检查您在ViewDod控制台中为用户显示的对象user.last有效,但当我添加user.last.fullname时,它会给我一个错误“#{first_name}{last_name}”我think@user1868185如果您要调用fullname-它会工作-检查更新我现在尝试了它,但现在的问题是它没有显示任何类似的内容。@user1868185运行rails c(打开控制台),运行:User.last(将显示最后一个用户),然后运行User.last.fullname(将显示,该方法正在工作)。如果如我所说,请再次检查您在VIEW中显示的对象。控制台是否为用户运行user.last但当我添加user.last.fullname时,它会给我一个错误HI错误是我在模型中输入的最后一个代码,您看到了什么错误?未定义什么?这是它在StatuseController#index中显示的名称错误未定义的局部变量或#的方法“first_name”;此错误意味着您将该方法放入StatusController。请尝试将其放入您的用户模型。我更新并测试了其他注释,但现在它只显示错误即将发生。错误是我最后一次输入的代码。当您将其放入模型时,您看到了什么错误?未定义什么?这是它在StatuseController中显示的名称错误#索引未定义的局部变量或#的方法“first_name”#此错误意味着您将该方法放入StatusController。请尝试将其放入您的用户模型。我更新并测试了其他注释,但现在它只显示错误。我尝试了此操作,但没有显示任何错误ror,它也没有在屏幕上显示任何内容,但仍然感谢您的努力!您必须在索引视图中使用
@full
或@user.full\u name
。控制器不公开方法进行查看。您好,正如您所说,我使用了@full,还使用了@user.full\u名称,但它没有给出任何提示