Ich versuche, herauszufinden, wie mit den Ideen in diesem Tutorial folgen:Rails 4 - Argument Fehler - scoped Einladung
https://coderwall.com/p/rqjjca/creating-a-scoped-invitation-system-for-rails
Ich bin stecken zu bleiben, wie Benutzer einladen. Ich habe ein Formular, um einen Benutzer einzuladen, der auf der Show-Seite arbeitet. Es funktioniert bis zu dem Punkt, wo ich send drücke. Dann bekomme ich einen Fehler, der sagt:
wrong number of arguments (given 1, expected 0)
Ich weiß nicht, was ein Argument ist. Ich bin nicht sicher, was die eine Sache ist, die als gegebenes Argument bezeichnet wird und ich weiß nicht, was das System erwartet. Ich habe versucht herauszufinden, was ein Argument ist und ob ich versuchen muss herauszufinden, wie man die Erwartung erhöhen oder reduzieren kann, was immer es ist, das gegeben wurde, das gezählt wird.
Ich fand diesen Artikel, der versucht zu erklären, was ein Argument ist: http://www.skorks.com/2009/08/method-arguments-in-ruby/ aber von allen angegebenen Beispielen zeigt es keine Methode ohne ein Argument und es sagt nicht wirklich, was das Argument dort zu tun ist. Ich bin immer noch verwirrt.
Die Referenzen in der Fehlermeldung sind:
def existing_user_invite
mail(
:subject => "You've been invited to join a team",
:to => '[email protected]',
:from => '[email protected]',
:html_body => ''
# :track_opens => 'true'
)
end
Es ist auch in meinem lädt zu dieser Linie bezieht Aktion erstellen:
def create
@invite = Invite.new(invite_params)
@invite.sender_id = current_user.profile.id
if @invite.save
InviteMailer.existing_user_invite(@invite).deliver
@invite.recipient.project.push(@invite.project)
else
#send new user email invitation to join as a user and then as part of this team
@invite.recipient.project.push(@invite.project)
# InviteMailer.new_user_invite(@invite, new_user_registration_path(:invite_token => @invite.token)).deliver
end
# oh no, creating an new invitation failed
end
Das Tutorial Methode erstellen zeigt dies:
def create
@invite = Invite.new(invite_params)
@invite.sender_id = current_user.id
if @invite.save
#if the user already exists
if @invite.recipient != nil
#send a notification email
InviteMailer.existing_user_invite(@invite).deliver
#Add the user to the user group
@invite.recipient.user_groups.push(@invite.user_group)
else
InviteMailer.new_user_invite(@invite, new_user_registration_path(:invite_token => @invite.token)).deliver
end
else
# oh no, creating an new invitation failed
end
end
Ich finde es generell schwierig, Schienen oder Ruby-Ressourcen zu finden, die erklären, welche Komponenten sind. Ich Pinning meine vorherigen Fragen, mehr Hintergrund über das Problem bieten ich versuche zu lösen:
Rails 4 - Invite team mates to project
Rails 4 - Associations - adding team mates to teams
Invite_mailer.rb
class InviteMailer < ActionMailer::Base
# include Devise::Mailers::Helpers
def existing_user_invite(invite)
mail(
:subject => "You've been invited to join a research project team",
:to => '[email protected]',
:from => '[email protected]',
:html_body => ''
# :track_opens => 'true'
)
end
end
Hallo Pavan, ich habe das versucht, aber es führt zu einem Fehler, der sagt: "Stack-Level zu tief". Von dem, was ich entziffern kann, tritt dieser Fehler auf, weil der Code in einer Schleife steckenbleibt: Entweder eine Methode, die sich selbst aufruft, oder zwei Methoden, die sich gegenseitig aufrufen. Ich weiß nicht, was das bedeutet oder wie es passieren könnte, wenn man ein Argument hinzufügt. Ich werde versuchen, als nächstes mehr darüber zu erfahren. – Mel
@Mel hat das nicht erwartet. Können Sie versuchen, den Argumentnamen in etwas anderes zu ändern .. wie 'def existing_user_invite (einladung)' – Pavan
aber was bedeutet (einladung)? Ist es nur ein zufälliges Wort, das ich einfügen soll? – Mel