trilhos simple_form - campo oculto - criar?


Respostas:


309

tente isso

= f.input :title, :as => :hidden, :input_html => { :value => "some value" }

8
Obrigado, isso funcionou. = f.input :title, :as => :hidden, :input_html => { :value => "some value" }
Linus Oleander

5
Essa é a simple_formmaneira de fazer entradas ocultas, no entanto, se apenas uma entrada oculta for necessária, use o hidden_fieldconstrutor de formulários do Rails, pois o Simple Form herda todos os métodos do construtor de formulários.
scarver2

281

Mais curto ainda !!!

=f.hidden_field :title, :value => "some value"

Mais curto, mais seco e talvez mais óbvio.

Obviamente, com o ruby ​​1.9 e o novo formato de hash, podemos reduzir em 3 caracteres ...

=f.hidden_field :title, value: "some value"

1
Ou <% = f.hidden_field: term_id,: value => @ transaction.term_id%>
mirap

2
Essa deve ser a resposta aceita. Mesmo que a pergunta seja feita sobre a forma simples, não há razão para usá-la quando isso realiza exatamente a mesma coisa com uma sintaxe mais curta.
Greg Blass

5
= f.input_field :title, as: :hidden, value: "some value"

Também é uma opção. Observe, no entanto, que ignora qualquer wrapper definido para o construtor de formulários.


5

A maneira correta (se você não está tentando redefinir o valor da entrada hidden_field) é:

f.hidden_field :method, :value => value_of_the_hidden_field_as_it_comes_through_in_your_form

Onde :method é o método que, quando chamado no objeto, resulta no valor que você deseja

Então, seguindo o exemplo acima:

= simple_form_for @movie do |f|
  = f.hidden :title, "some value"
  = f.button :submit

O código usado no exemplo redefinirá o valor (: title) de @movie sendo passado pelo formulário. Se você precisar acessar o valor (: title) de um filme, em vez de redefini-lo, faça o seguinte:

= simple_form_for @movie do |f|
  = f.hidden :title, :value => params[:movie][:title]
  = f.button :submit

Mais uma vez, use apenas minha resposta: você não deseja redefinir o valor enviado pelo usuário.

Espero que isto faça sentido.


1
Para simple_form_for, o hiddenmétodo que usa aqui vai gerar um erro undefined method escondido' for # <SimpleForm :: FormBuilder: 0x00007ffa6cde0be8> `
Kiry Meas
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.