2 ruby database ruby-on-rails concatenation
我的表项目中有3列.first_name,last_name和fullname.
<%= f.hidden_field :first_name, :value => current_user.firstname %>
<%= f.hidden_field :last_name, :value => current_user.lastname %>
Run Code Online (Sandbox Code Playgroud)
在用户保存项目时,用户的名字和姓氏将保存到单独的列中.我现在想要将名字和姓氏保存到列全名,所以我可以稍后搜索它们.
所以,如果名字是
first_name = "Joe"
last_name = "Bloggs"
Run Code Online (Sandbox Code Playgroud)
我怎么会得到
fullname = "Joe Bloggs"
Run Code Online (Sandbox Code Playgroud)
我试过这个,但它不起作用.
<%=f.hidden_field :fullname, :value => :first_name + :last_name %>
Run Code Online (Sandbox Code Playgroud)
有人能指出我正确的方向吗?我是铁杆的新手所以请在尝试帮助时记住这一点.谢谢.
UPDATE
现在我已经将它添加到我的项目模型中:
def set_fullname
fullname = first_name + last_name
end
Run Code Online (Sandbox Code Playgroud)
我现在在我看来称之为:
<%= f.hidden_field :first_name, :value => current_user.firstname %>
<%= f.hidden_field :last_name, :value => current_user.lastname %>
<%= f.hidden_field :fullname, :value => @project.fullname %>
Run Code Online (Sandbox Code Playgroud)
当我点击提交时,我会检查日志,这些名字会像往常一样保存到表中,但是全名是空白的.任何人都可以看到问题是什么?
UPDATE2
视图:
<%= f.hidden_field :first_name, :value => current_user.firstname %>
<%= f.hidden_field :last_name, :value => current_user.lastname %>
<%= f.hidden_field :fullname, :value => @project.set_fullname %>
Run Code Online (Sandbox Code Playgroud)
项目模型:
def set_fullname
fullname = first_name + last_name
end
Run Code Online (Sandbox Code Playgroud)
当我尝试访问该页面时,我收到此错误.
undefined method `+' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
视图中的Ruby代码在加载表单时执行,到那时表单中没有内容(如果您创建新记录).在javascript中编写类似的代码并将其映射到onchange事件first_name和last_name文本字段是有意义的.
或者您可以在模型的服务器端执行此操作,例如:
class Person
before :save, :set_fullname
def set_fullname
fullname = "#{first_name} #{last_name}"
end
end
Run Code Online (Sandbox Code Playgroud)
before :save 每次更新模型时都会执行
无论如何,更清洁的解决方案是调整您的搜索查询,这样您只需复制数据库中的信息.
在搜索时尝试这样的事情:
"first_name LIKE ? or last_name LIKE ? or concat(last_name, ', ', first_name) LIKE ?"
Run Code Online (Sandbox Code Playgroud)
这个SQL代码可能依赖于数据库,如果你使用的是MySQL,它可能还可以
| 归档时间: |
|
| 查看次数: |
7572 次 |
| 最近记录: |