如何在我的视图中填充 "attr_accessor"?
How do I populate an "attr_accessor" in my view?
我正在使用 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”方法的指定输出填充它?
空白文本区域可能是因为您的 roles_str
不是数据库中的属性,而是一个简单的访问器。要填充文本区域,请手动提供值,正如@MarsAtomic 在其现已删除的答案中所建议的那样。
<%= f.text_area(:roles_str, value: @scenario.roles_str, cols: 40, rows: 20, validate: true) %>
问题是,当表单被回发时,你打算做什么?它不会自动保存(因为 table 中没有匹配的列)。但是,我想,这超出了这个问题的范围。 :)
我正在使用 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”方法的指定输出填充它?
空白文本区域可能是因为您的 roles_str
不是数据库中的属性,而是一个简单的访问器。要填充文本区域,请手动提供值,正如@MarsAtomic 在其现已删除的答案中所建议的那样。
<%= f.text_area(:roles_str, value: @scenario.roles_str, cols: 40, rows: 20, validate: true) %>
问题是,当表单被回发时,你打算做什么?它不会自动保存(因为 table 中没有匹配的列)。但是,我想,这超出了这个问题的范围。 :)