Ruby on rails 使用新的()方法填充表单

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

问题已解决。HTML5本地存储把我搞得一团糟。

我试图用new()-方法中的参数填充表单,但无法使其工作

每个用户都有保存在数据库中的表单的默认值(在一个名为defaults的表中),当您创建新记录时,我希望用该表中的值填充它

@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是否应允许质量分配来设置该属性/字段。