Rails 5: первый аргумент в форме не может содержать ноль или быть пустым - PullRequest
0 голосов
/ 14 января 2019

Сейчас я занимаюсь разработкой своего нового веб-приложения, поэтому хочу внедрить систему приглашений для зарегистрированных пользователей. Я следовал учебнику, который нашел в Интернете, но столкнулся с некоторыми проблемами.

Я пытаюсь отобразить «Форму приглашения» на странице профиля.

Так что это мои регистрации / 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

1 Ответ

0 голосов
/ 14 января 2019

Вам нужно инициализировать объект в new и edit действиях:

def new
  @invite = Invite.new
end

def edit
  @invite = Invite.find(params[:id])
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...