¿Cómo crear una lista de selección dinámica usando Simple Form y Awesome Nested Set en Rails 3.1?

¿Podría alguien explicar cómo crear una selección desplegable generada dinámicamente que muestre etiquetas de nombre al visitante de la web y escriba la identificación correspondiente en la base de datos? Este concepto parece tan básico que debe ser obvio para todos los demás, pero estoy completamente desesperado tratando de encontrar una manera de hacer que esto funcione y/o un buen ejemplo de código para aprender a hacerlo. ¿Alguna sugerencia para un novato muy frustrado?

Tengo un modelo de categoría simple que usa Awesome Nested List para rastrear alrededor de 200 categorías. Estos son los campos de la tabla:

t.string :name
t.integer :parent_id
t.integer :lft
t.integer :rgt

Este es el modelo category.rb:

class Category < ActiveRecord::Base
  acts_as_nested_set
  attr_accessible :name, :parent_id
end

Este es el formulario simple para view/categories/_form.html.erb

<%= simple_form_for(@category) do |f| %>
  <%= f.error_notification %>

  <div class="form-inputs">
    <%= f.input :name, :label => 'Category name' %>
    <%= f.select :parent_id, :label => 'Parent category', :value_method => { |r| [r.name, r.id, { :class => r.category.id }]}, :include_blank => true %>
  </div>

  <div class="form-actions">
   <%= f.button :submit %>
  </div>
<% end %>

Esto produce un mensaje de error "SyntaxError in Categories#new"

Extracted source (around line #6):

3: 
4:   <div class="form-inputs">
5:     <%= f.input :name, :label => 'Category name' %>
6:     <%= f.select :parent_id, :label => 'Parent category', :value_method => { |r| [r.name, r.id, { :class => r.category.id }]}, :include_blank => true %>
7:   </div>
8: 
9:   <div class="form-actions">

preguntado el 10 de marzo de 12 a las 01:03

1 Respuestas

Puede usar el asistente de vista de awesome_nested_set para construir su select:

<%= f.select :parent_id, nested_set_options(Category, @category) {|i| "#{'-' * i.level} #{i.name}" } %>

respondido 10 mar '12, 07:03

¡Hurra! ¡El asistente de vista del conjunto anidado funcionó muy bien! ¡MUCHAS GRACIAS @nash! - Katherine chalmers

Hola @VasiliyErmolovich, quiero reemplazar - (guión) con un espacio en blanco. ¿Cómo implementaría eso? por favor ayuda - Rajdeep Singh

@RSB ¿qué pasa con "&nbsp;" * i.level? - vasiliy ermolovich

@RSB tienes que usar .html_safe en esa cadena si quieres mostrarla como un espacio en blanco, supongo. - vasiliy ermolovich

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.