Wo finde ich setzen ‚Helfer‘ Methoden?
-
03-07-2019 - |
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?
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.