问题解决了。 HTML5 localStorage与我搞混。
我正在尝试使用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()方法中创建的值。
最奇怪的是,当我在加载页面后检查源代码时,输入值属性会填充正确的信息,但不会在页面上呈现...
答案 0 :(得分:1)
你在这做什么:
Invoice.new(:title => @default.title, :company_information => @default.company_information)
有道理并且应该有效......除非这些字段受到质量分配的保护。
class Invoice << ActiveRecord::Base
attr_accessible :some, :other, :fields
...
end
这可以让您在初始化Invoice对象时设置:some, :other, (and) :fields
,但这会阻止您设置任何其他“属性”。
答案 1 :(得分:0)
奇怪的是,我没有看到你想要做的事情有什么问题...也许浏览器方面的某些东西(javascript,css等)正在喋喋不休?
检查表单输入中是否有可选择的内容,或尝试创建没有任何javascript或css的vanilla表单。或者,您甚至可以尝试使用以下内容在html中打印属性的内容(不使用input / textarea标记):
<%= @invoice.title %>
这至少有助于确认默认值确实设置。另外,使用:
<%= f.object.title %> # place me inside the form_for block
将帮助您确认表单构建器实例也具有正确的值。
祝你好运。