Frage

In meiner Ruby on Rails-Anwendung, ich habe:

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

  end
end

und auch

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

Doch ich bekomme eine Fehlermeldung, dass parse_role_data ist nicht definiert. Was mache ich falsch?

War es hilfreich?

Lösung

Helfer sind vor allem für komplexe Ausgangsbezogene Aufgaben verwendet, wie eine HTML-Tabelle aus einer Liste der Termine für den Kalender zu machen. Alles, was im Zusammenhang mit den Geschäftsregeln wie eine Datei Parsen in dem zugehörigen Modell gehen sollte, ein mögliches Beispiel unter:

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

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

Schauen Sie auch in Verwendung (RESTful Routen oder die: Bedingungen Option) [ http: //api.rubyonrails.org/classes/ActionController/Routing.html] wenn Routen zu machen, anstatt für request.post? in Ihrem Controller zu prüfen.

Andere Tipps

Sollten Sie nicht die parse_role_data durch die AdminHelper zugreifen?

Update 1: check this   http://www.johnyerhot.com / 2008/01/10 / Schienen-mit-Helfer-in-you-Controller /

Von den Blicken von, wenn Sie versuchen, eine Benutzeroberfläche erstellen für Rollen an Benutzer hinzufügen. Ich werde Sie einen Userscontroller bereits annehmen müssen, so würde ich vorschlagen, ein Vorbild und einen RolesController hinzufügen. In Ihrem routes.rb tun würde Sie so etwas wie:

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

Dies ermöglicht es Ihnen, eine Route haben wie:

/users/3/roles

In Ihrem RolesController Sie etwas tun würde, wie:

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

Dies wird die Rolle params Daten aus dem Formular in der neuen Aktion angezeigt nehmen und ein neues Vorbild für diesen Benutzer erstellen. Hoffentlich ist dies ein guter Ausgangspunkt für Sie.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top