Question

Dans mon application Ruby on Rails, j'ai:

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

  end
end

et aussi

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

Je reçois une erreur en disant que parse_role_data n'est pas défini. Qu'est-ce que je fais mal?

Était-ce utile?

La solution

Les aides sont principalement utilisés pour les tâches complexes liées aux sorties, telles que la création d'un tableau HTML pour le calendrier à partir d'une liste de dates. Tout ce qui concerne les règles de gestion, telles que l'analyse d'un fichier, doit figurer dans le modèle associé, un exemple possible ci-dessous:

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

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

Cherchez également à utiliser (routes RESTful ou l'option: conditions) [ http: //api.rubyonrails.org/classes/ActionController/Routing.html] lors de la création de routes, au lieu de rechercher request.post? dans votre contrôleur.

Autres conseils

Ne devriez-vous pas accéder à la parse_role_data via AdminHelper?

Mise à jour 1: cochez cette case.   http://www.johnyerhot.com / 2008/01/10 / rails-using-helpers-in-you-controller /

De l'apparence de si vous essayez de créer une interface utilisateur pour ajouter des rôles aux utilisateurs. Je vais supposer que vous avez déjà un UsersController, je vous suggère donc d'ajouter un modèle de rôle et un RolesController. Dans votre fichier routes.rb, vous feriez quelque chose comme:

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

Cela vous permettra d'avoir un itinéraire tel que:

/users/3/roles

Dans votre RolesController, vous feriez quelque chose comme:

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

Ceci utilisera les données de paramètres de rôle du formulaire affiché dans la nouvelle action et créera un nouveau modèle de rôle pour cet utilisateur. J'espère que c'est un bon point de départ pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top