Сейчас я занимаюсь разработкой своего нового веб-приложения, поэтому хочу внедрить систему приглашений для зарегистрированных пользователей. Я следовал учебнику, который нашел в Интернете, но столкнулся с некоторыми проблемами.
Я пытаюсь отобразить «Форму приглашения» на странице профиля.
Так что это мои регистрации / edit.html.erb
<%= form_for(@invite, url: invites_path) do |f| %>
<%= f.hidden_field :user_id, value: @user.id %>
<%= f.label :email %>
<%= f.email_field :email %>
<%= f.submit 'Send' %>
<% end %>
Здесь я получаю сообщение об ошибке Первый аргумент в форме не может содержать nil или быть пустым для @invite
, я уже пробовал Invite.new
и :invite
, и оба работают нормально.
Это мой invites_controller
class InvitesController < ApplicationController
def new
end
def create
@invite = Invite.new(invite_params) # Make a new Invite
@invite.sender_id = current_user.id # set the sender to the current user
if @invite.save
InviteMailer.new_user_invite(@invite, new_user_registration_path(invite_token: @invite.token)).deliver #send the invite data to our mailer to deliver the email
else
# oh no, creating an new invitation failed
end
end
def show
end
def index
end
def update
end
def edit
end
def invite_params
params.require(:invite).permit(:sender_id, :recipient_id, :email, :token)
end
end
Моя модель пользователя
class User < ApplicationRecord
has_many :invitations, class_name: 'Invite', foreign_key: 'recipient_id'
has_many :sent_invites, class_name: 'Invite', foreign_key: 'sender_id'
end
Моя модель приглашения
class Invite < ApplicationRecord
belongs_to :sender, class_name: 'User'
belongs_to :recipient, class_name: 'User'
end