Ruby on rails 使用新的()方法填充表单
问题已解决。HTML5本地存储把我搞得一团糟。 我试图用new()-方法中的参数填充表单,但无法使其工作 每个用户都有保存在数据库中的表单的默认值(在一个名为defaults的表中),当您创建新记录时,我希望用该表中的值填充它Ruby on rails 使用新的()方法填充表单,ruby-on-rails,ruby,Ruby On Rails,Ruby,问题已解决。HTML5本地存储把我搞得一团糟。 我试图用new()-方法中的参数填充表单,但无法使其工作 每个用户都有保存在数据库中的表单的默认值(在一个名为defaults的表中),当您创建新记录时,我希望用该表中的值填充它 @default = Default.find_by_user_id(current_user.id) @invoice = Invoice.new(:title => @default.title, :company_information => @defa
@default = Default.find_by_user_id(current_user.id)
@invoice = Invoice.new(:title => @default.title, :company_information => @default.company_information)
render 'create'
在我看来:
form_for @invoice, :url => { :action => "create"} do |f| ...
所发生的情况是,将创建发票的默认值,但不会创建在new()-方法中创建的值
最奇怪的是,当我在加载页面后检查源代码时,输入值属性中填充了正确的信息,但没有在页面上呈现…您在这里做什么:
Invoice.new(:title => @default.title, :company_information => @default.company_information)
有意义并且应该有效…除非这些字段被保护不受批量分配的影响
class Invoice << ActiveRecord::Base
attr_accessible :some, :other, :fields
...
end
class Invoice奇怪,我看不出你所做的有什么不对。。。也许浏览器端(javascript、css等)有什么问题
检查表单输入中是否有可选择的内容,或者尝试创建一个没有任何javascript或css的普通表单。或者,您甚至可以尝试简单地在html中打印属性的内容(不使用input/textarea标记),例如:
<%= @invoice.title %>
这至少有助于确认默认值确实已设置。此外,使用:
<%= f.object.title %> # place me inside the form_for block
#将我放在块的表单_中
将帮助您确认form builder实例也具有正确的值
祝您好运。您为默认值创建单独的模型有什么原因吗?您可以在迁移中附加默认值,或在初始化后在模型中设置默认值。是。用户可以在另一个表单中编辑这些默认值,因此当他们创建新记录时,默认值由他们定义。根据屏幕截图,是否可能有JavaScript干扰表单元素值的显示?或者,CSS使文本不可见?这是javascript。谢谢。我不知道它们是否受保护,因为我可以使用logger.info在日志中和在源代码中看到它们…attr\u accessible
和attr\u protected
不会改变可见性(public、protected、private);它设置Rails是否应允许质量分配来设置该属性/字段。