如何填充" attr_accessor"在我看来?

时间:2016-11-17 16:07:51

标签: ruby-on-rails model ruby-on-rails-5 attr-accessor

我正在使用Rails 5.我的这个模型带有以下“attr_accessor”......

class Scenario < ApplicationRecord
  belongs_to :grading_rubric, optional: true
  has_many :confidential_memo
  has_many :scenario_roles, :dependent => :destroy
  has_many :roles, :through => :scenario_roles

  attr_accessor :roles_str

  validates_presence_of :title
  validates_presence_of :abstract

  def roles_str
    str = ""
    roles.each do |role|
      str = str.empty? ? "role.name\n" : "#{str}#{role.name}"
    end
    str
  end   
end

在我看来,我想在“roles_str”文本区域中显示上述“roles_str”方法的输出。我有这个设置

<%= form_for @scenario, :url => url_for(:controller => 'scenarios', :action => 'create') do |f| %>
…
    <%= f.text_area(:roles_str, cols: 40, rows: 20, :validate => true) %>

但是当我编辑我的对象时,不会填充此字段。如何使用模型的“role_str”方法中的指定输出填充它?

1 个答案:

答案 0 :(得分:0)

空文本区域可能是因为您的roles_str不是数据库中的属性,而是简单的访问者。要填充文本区域,请按照@MarsAtomic在他现在删除的答案中的建议手动提供值。

<%= f.text_area(:roles_str, value: @scenario.roles_str, cols: 40, rows: 20, validate: true) %>

问题是,当表单被发回时你打算做什么?它不会自动保存(因为表中没有匹配的列)。但是,我想,这超出了这个问题的范围。 :)