¿Es posible usar Simple Form (por: Plataformatec) sin modelo?SimpleForm sin for (no modelo)
https://github.com/plataformatec/simple_form
¿Es posible usar Simple Form (por: Plataformatec) sin modelo?SimpleForm sin for (no modelo)
https://github.com/plataformatec/simple_form
Puede utilizar :symbol
como primer argumento.
<%= simple_form_for :user, url: users_path do |f| %>
<%= f.input :name, as: :string %>
...
<% end %>
Es seria algo como esto:
<form novalidate="novalidate" class="simple_form user" action="/users" accept-charset="UTF-8" method="post">
...
<div class="input string required user_name">
<label class="string required" for="user_name">
<abbr title="required">*</abbr> Name
</label>
<input class="string required" type="text" name="user[name]" id="user_name" />
</div>
...
</form>
Aunque no tiene sentido, ¿no? No obtiene ninguno de los beneficios de simple_form_for cuando está utilizando los generadores de campo de texto alternativo. – toxaq
@toxaq Quizás ese no sea un buen ejemplo. Puede usar 'f.input: name,: as =>: string' y generar su forma habitual con etiqueta, sugerencias, etc. – htanata
Extrañamente, eso es exactamente lo que estoy tratando de hacer y no tener éxito. ¿Tu ejemplo da un nombre de "método indefinido"? para nada: NilClass' para mí al menos. – toxaq
También podría pasar un :symbol
en lugar de @object
como argumento para simple_form_for
.
<%= simple_form_for :email, :url => '/post_email' do |f| %>
<%= f.input :subject, :as => :string %>
<% end %>
Qué sería de salida:
<form method="post" class="simple_form email" action="/post_email" accept-charset="UTF-8">
...
<input type="text" size="30" name="email[subject]" id="email_subject">
</form>
Tenga en cuenta las siguientes extracciones espaldas:
:url
y el tipo de cada input
Esta opción todavía usa un modelo debajo de las cubiertas. El símbolo debe coincidir con el nombre de un modelo, se resolverá en un modelo y creará uno nuevo y lo usará en todos los campos, por lo que las propiedades utilizadas en los campos de formulario realmente deberían existir en el modelo. –
Lamentablemente, simple_form se basa en el uso de un modelo. En esencia, sería bueno tener algo así como los métodos simple_form_tag y input_tag equivalentes a sus rails * _tag helpers. Hasta entonces, hay un trabajo fácil.
Use un símbolo en lugar de la clase en el formulario y pase el valor explícitamente para evitar que simple_form intente acceder a las propiedades del modelo.
<%= simple_form_for :user, :url => '/users' do |f| %>
<%= f.text_field :name, input_html: { value: nil } %>
<% end %>
Esto evitará el error undefined method 'name' for User
.
Esto funcionó para mí: <% = f.input: create_key, input_html: {value: nil}, required: true, sugerencia: "solo por invitación, vea la clave de correo electrónico"%> – codenoob
Si trabaja con una colección, use ' seleccionado' en lugar de 'valor' para evitar el' método indefinido 'nombre' para error de Modelo' –
Todos los métodos anteriores aún le dejan datos de formulario anidados dentro de "usuario" o cualquier símbolo que pase como primer argumento. Eso es molesto.
Para imitar el estilo/ventajas de simple_form, pero elimine la dependencia de objeto/símbolo y el anidamiento de datos forzados, puede crear un parcial.
HAML
ejemplos:
forma de vista:
= form_tag("path/to/action", method: "POST") do
= render "path/to/partial/field", type: "string", required: true, item: "first_name"
field
parcial:
- required_string = required ? "required" : ""
%div{class: "input #{type} #{required_string} #{item}"}
%label{class: "#{type} #{required_string}", for: "#{item}"}
- if required
%abbr{title: "required"}
*
= t("application.#{item}")
%input{name: "#{item}", |
placeholder: t("application.#{item}"), |
type: "#{type}", |
required: required, |
"aria-required" => "#{required}" }
También puede utilizar campos fuera el modelo dentro de un modelo forma, con simple_fields_for como esto:
<%= simple_form_for @user do |f| %>
<%= f.input :name %>
<%= simple_fields_for :no_model_fields do |n| %>
<%= n.input :other_field %>
<% end %>
<% end %>
Esta es una solución simple y práctica, porque puede crear diferentes tipos de campos de diferentes modelos o sin usar los modelos
Tal vez [mi respuesta a la otra pregunta] [1] lo ayude. [1]: http://stackoverflow.com/a/14659270/157816 – baxang
Salida http://stackoverflow.com/questions/12146466/rails-simple-form-fields-not-related- para el modelo – Dean