Pregunta

En mi aplicación Ruby on Rails, tengo:

class AdminController < ApplicationController
  def create
    if request.post? and params[:role_data]
      parse_role_data(params[:role_data])
    end

  end
end

y también

module AdminHelper
  def parse_role_data(roledata)
    ...
  end
end

Sin embargo, me sale un error que dice que parse_role_data no está definido. ¿Qué estoy haciendo mal?

¿Fue útil?

Solución

Los helpers se usan principalmente para tareas complejas relacionadas con resultados, como hacer una tabla HTML para el calendario a partir de una lista de fechas. Cualquier cosa relacionada con las reglas comerciales, como analizar un archivo, debe ir en el modelo asociado, un posible ejemplo a continuación:

class Admin < ActiveRecord::Base
  def self.parse_role_data(roledata)
    ...
  end
end

#Call in your controller like this
Admin.parse_role_data(roledata)

También busque en (rutas RESTful o la opción: condiciones) [ http: //api.rubyonrails.org/classes/ActionController/Routing.html] al realizar rutas, en lugar de buscar request.post? en su controlador.

Otros consejos

¿No debería estar accediendo a parse_role_data a través de AdminHelper?

Actualización 1: verifica esto   http://www.johnyerhot.com / 2008/01/10 / rails-using-helpers-in-you-controller /

Desde el punto de vista de si está intentando crear una IU para agregar roles a los usuarios. Voy a asumir que ya tienes un controlador de usuario, por lo que te sugeriría agregar un modelo de roles y un controlador de roles. En tus rutas.rb harías algo como:

map.resources :users do |u|
    u.resources :roles
end

Esto te permitirá tener una ruta como:

/users/3/roles

En tu RolesController harías algo como:

def create
    @user = User.find_by_username(params[:user_id])
    @role = @user.roles.build(params[:role])
    if @role.valid?
        @role.save!
        redirect_to @user
    else
        render :action => 'new'
    end
end

Esto tomará los datos de parámetros de rol del formulario que se muestra en la nueva acción y creará un nuevo modelo de rol para este usuario. Espero que este sea un buen punto de partida para ti.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top