2014-01-17 1 views
0

Я сторонник + PHP dev, пытаясь исправить [] в проекте, построенном в Rails.Как извлечь информацию из поля ввода в ruby ​​

[] = Извлечь цвет, показать немного более темный цвет.

Эта строка:

<%= f.text_field attribute %> 

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

это код из файла select_a_color_input.html.erb в папке приложения/представления/общего доступа. Любые идеи о том, где продолжить мою охоту за сокровищами? :)

обновление: я нашел это!

def app_text_field(attribute, args = {}) 
    render_field 'text_field', field_locals(attribute, args) 
end 

Помогло ли это?^__^

обновление: Форма строитель

class AppFormBuilder < ActionView::Helpers::FormBuilder 
    def form_fields(partial = nil , options = {}) 
    partial ||= 'form' 
    fields = '' 
    unless options.delete(:without_error_messages) 
     fields << @template.render('shared/error_messages', :target => Array(@object).last) 
    end 
    fields << @template.render(partial, options.merge(:f => self)) 
    end 


    def app_text_field(attribute, args = {}) 
    render_field 'text_field', field_locals(attribute, args) 
    end 

    def app_file_field(attribute, args = {}) 
    render_field 'file_field', field_locals(attribute, args) 
    end 

    private 

    def render_field(name, locals) 
    @template.render field_path(name), locals 
    end 

    def field_locals(attribute, args = {}) 
    help_options = args[:help_options] || {} 
    field_options = args[:field_options] || {} 
    html_options = args[:html_options] || {} 
    { :f => self, :attribute => attribute, :help_options => help_options, :field_options => field_options, :html_options => html_options, :object => object } 
    end 

    def field_path(value) 
    "shared/app_form/#{value}" 
    end 
end 

обновление: Когда я попытался добавить

<%= content_tag(:p, attribute) %> 

Это не дает мне значения, но вместо этого идентификатор/наименование элемент, а не цвет.

+0

Вы хотите использовать значение на стороне клиента (например, JavaScript) или на стороне сервера? – zeantsoi

+0

Мой план состоит в том, чтобы добавить div перед этим полем ввода с выделенным цветом в качестве фонового значения, а затем преобразованное только слегка более темное значение в качестве границы при создании страницы. Существует много разных цветовых вводов, поэтому я хотел бы создать предварительный просмотр цвета при загрузке страницы. – Alisso

+0

Если пользователь меняет цвет, он обновит предварительный просмотр с помощью js. – Alisso

ответ

1
<%= f.text_field attribute %> 

Это само по себе не очень полезно, чтобы помочь нам собрать контекст. Как выглядит окружающая надпись? attribute - это рубиновая переменная в этом случае. Если это было f.text_field :attribute, то :attribute теперь является символом вместо переменной, и это указывает на то, что оно сопоставляется методу attribute на модели X. Все это зависит от того, как выглядит ваш form_for. Я приведу пример:

<%= form_for @user do |f| %> 
    <%= f.text_field :attribute %> 

В этом случае, у нас есть форма для User модели, и наши text_field карты в @user.attribute. Само поле выглядит примерно так:

<input type='text' name='user[attribute]'> 

И в #update или #create действия контроллера (в зависимости от того, является ли это новая запись или существующей записи вы редактируете) значение будет доступно таким образом:

params[:user][:attribute] 

Однако невозможно сказать, какие именно параметры будут выглядеть в вашем конкретном случае. Какие действия выполняются? Как называется файл, из которого он загружается? «app/views/users/new» будет указывать, что действие #new обрабатывает эту страницу, а действие #create будет обрабатывать отправку формы.

Вещи, которые мы должны знать, чтобы полностью решить проблему:

  • имя и соответствующий код контроллера, который обработки этого действия.

  • Полный путь вид, что это визуализируется от

  • Остальная часть разметки, начиная с form_for и заканчивающийся в этом атрибуте поля

  • Какую ценность attribute держать? Это переменная, поэтому она должна содержать значение символа или что-то, что укажет, какое поле отображается на этом входе.

+0

Хе х упс, выложил мой пример разметки как 'haml' - слишком привык к этому. Я исправил его до erb – nzifnab

Смежные вопросы