0

这是对我有用的代码片段

用户模型

class User < ActiveRecord::Base

  def full_name
    [first_name,last_name].join(" ")
  end

  def full_name=(name)
    split = name.split(" ",2)
    self.first_name = split.first
    self.last_name = split.last
  end
end

然后这里是视图文件

显示文件

<h1>
    <%= @user.full_name %>
</h1>

编辑文件

<div class="field">
    <%= f.label :full_name %><br />
    <%= f.text_field :full_name %>
</div>

这对我来说非常好。

我读过attr_accessor 的工作方式与

  def full_name
    [first_name,last_name].join(" ")
  end

  def full_name=(name)
    split = name.split(" ",2)
    self.first_name = split.first
    self.last_name = split.last
  end

所以我试着像

class User < ActiveRecord::Base
  attr_accessor :full_name
end

我无法弄清楚还应该做什么。

提交表单时,既不会在显示页面中显示完整名称,也不会在数据库中更新相同名称。

4

1 回答 1

-1

这是不正确的。attr_accessor

def full_name
  @full_name
end

def full_name=(value)
  @full_name = value
end

它只是为您的实例变量创建原始的 getter / setter。如果您需要任何类型的高级处理(在您的情况下拆分/加入),您需要自己定义 getter 和 setter 方法。

于 2012-09-18T11:44:17.213 回答