ROR: просмотр только полей формы - PullRequest
0 голосов
/ 26 февраля 2012

Есть ли способ пометить поле формы, чтобы оно было доступно только в представлении?

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

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

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

Ответы [ 3 ]

1 голос
/ 26 февраля 2012

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

1 голос
/ 26 февраля 2012

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

0 голосов
/ 26 февраля 2012

Чтобы развернуть ответ 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

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