我正在使用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”方法中的指定输出填充它?
答案 0 :(得分:0)
空文本区域可能是因为您的roles_str
不是数据库中的属性,而是简单的访问者。要填充文本区域,请按照@MarsAtomic在他现在删除的答案中的建议手动提供值。
<%= f.text_area(:roles_str, value: @scenario.roles_str, cols: 40, rows: 20, validate: true) %>
问题是,当表单被发回时你打算做什么?它不会自动保存(因为表中没有匹配的列)。但是,我想,这超出了这个问题的范围。 :)