Заполните форму с помощью метода new () - PullRequest
0 голосов
/ 13 апреля 2011

Проблема решена. HTML5 localStorage напортачил со мной.

Я пытаюсь заполнить форму параметрами из метода new () и не могу заставить его работать.

У каждого пользователя есть значения по умолчанию для формы, сохраненной в базе данных (в таблице по умолчанию), и когда вы создаете новую запись, я хочу, чтобы она заполнялась значениями из этой таблицы.

@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 ().

Самое странное, что когда я проверяю исходный код после загрузки страницы, атрибуты входных значений заполняются правильной информацией, но не отображаются на странице ...

Ответы [ 2 ]

1 голос
/ 13 апреля 2011

Что вы здесь делаете:

Invoice.new(:title => @default.title, :company_information => @default.company_information)

Имеет смысл и должно работать ... если эти поля не защищены от массового назначения.

class Invoice << ActiveRecord::Base
  attr_accessible :some, :other, :fields
  ...
end

Это позволит вам установить :some, :other, (and) :fields при инициализации объекта Invoice, но не позволит вам устанавливать любые другие "атрибуты".

0 голосов
/ 13 апреля 2011

Странно, я не вижу ничего плохого в том, что вы пытаетесь сделать ... может быть, что-то на стороне браузера (javascript, css и т. Д.) Приводит к ухудшению ситуации?

Проверьте, еслиесть что-то выбираемое внутри входных данных формы или попробуйте создать ванильную форму без JavaScript или CSS.Или вы можете даже попробовать просто напечатать содержимое атрибута в html (без использования тегов input / textarea), используя что-то вроде:

<%= @invoice.title %>

Это, по крайней мере, поможет подтвердить, что значения по умолчанию там, где они действительно установлены,Кроме того, использование:

<%= f.object.title %> # place me inside the form_for block

поможет вам подтвердить, что экземпляр построителя форм также имеет правильное значение.

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...