2012-02-25 4 views
0

Есть ли способ, по которому вы можете пометить поле формы, которое будет доступно только в представлении?ROR: Показать только поля формы

У меня есть некоторые «вспомогательные» поля, которые я использую совместно с jQuery для создания и упорядочивания определенных элементов в представлении. Эти поля не должны передаваться контроллеру и вообще не связаны с моделью.

Мне просто интересно, есть ли какой-то атрибут, который я могу использовать с полями формы ROR, чтобы пометить их как устаревшие.

В настоящее время я просто использую поля формы ванили.

ответ

1

Возможно, FormTagHelper (doc) может вам помочь. С помощью этого помощника вы можете создавать входы html вне формы (таким образом, значение этих полей ввода не будет отправлено контроллеру).

+0

Благодарности , именно это я и искал для. альтернатива ROR :) – Rumpleteaser

1

HTML предоставляет атрибут «disabled» для всех элементов формы, которые исключают их из представления. Используйте это или выполните предварительную отправку проверки с помощью javascript, который удаляет атрибуты из представления формы.

0

Чтобы развернуть ответ Archit Baweja, теги BUTTON, INPUT, OPTGROUP, OPTION, SELECT и TEXTAREA не отображаются с формой. Более подробную информацию об элементах с отключением можно найти здесь: http://www.w3.org/TR/html4/interact/forms.html#h-17.12

Кроме того, если у вас есть какие-либо проблемы с безопасностью для этих входов, которые назначаются массой в контроллере через «upodate_attributes (params)), вы можете защитить от этого назначения конечного пользователя, используя attr_accessible . вы можете вызвать этот метод и передать имена параметров, которые вы хотели добавить в белый список, и позволить пройти при использовании update_attributes:

class AccountsController < ApplicationController 
    include ActiveModel::MassAssignmentSecurity 

    attr_accessible :first_name, :last_name 
    attr_accessible :first_name, :last_name, :plan_id, :as => :admin 

    def update 
    ... 
    @account.update_attributes(account_params) 
    ... 
    end 

    protected 

    def account_params 
    role = admin ? :admin : :default 
    sanitize_for_mass_assignment(params[:account], role) 
    end 

end 

Более подробной информации о модуле MassAssignmentSecurity можно найти здесь: http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html

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