2 Stimmen

Wie greife ich auf Hilfsprogramme zu, die ich in Rails geschrieben habe?

Ich habe einen Helfer für meine Benutzer-Modell in user_helper.rb geschrieben

module UserHelper
  def get_array_of_names_and_user_ids
    User.all(&:first_name) + User.all.map(&:user_id)
  end
end

Leider muss ich bei der Eingabe von

 <div class="field">
        <%= f.label :assignee, "Assigned to" %>
        <%= select(:task, :assignee_id, User.get_array_of_names_and_user_ids )%>
  </div>

Er kann es nicht sehen. Was mache ich falsch? Ich verwende Devise.

4voto

Kelly Punkte 37043

Sie sind in der Nähe. Der Helfer wird nicht zu einer Klassenmethode, sondern wird als Methode in Ihren Ansichten zugänglich. Rufen Sie einfach get_array_of_names_and_user_ids .

2voto

antonversal Punkte 1179

Hilfsmittel sind für Ansichten, nicht für Modelle. Für das Modell sollten Sie Klassenmethoden im Benutzermodell definieren

class User
  def self.get_array_of_names_and_user_ids
    User.all(&:first_name) + User.all.map(&:user_id)
  end
end

1voto

Harish Shetty Punkte 63187

Sie müssen diesen Helper nicht von Hand programmieren, da Rails einen Helper namens collection_select zu diesem Zweck.

Fügen Sie in Ihrer Ansicht einfach dies hinzu:

<%= collection_select(:task, :assignee_id, User.all, :id, :first_name, 
   :prompt => true) %>

Anmerkung:

Ich gehe davon aus, dass Sie eine kleine Anzahl von Benutzern in Ihrer DB haben (<30). Andernfalls müssen Sie ein anderes Steuerelement verwenden, um Benutzer auszuwählen.

0voto

chrispanda Punkte 3194

Helfer sind Methoden, die in der Ansicht aufgerufen werden können, nicht Methoden, die im Modell aufgerufen werden müssen. Rufen Sie einfach get_array_of_names_and_user_ids auf

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X