Я получаю пустое значение в параметрах, когда пытаюсь создать модель соединения - PullRequest
0 голосов
/ 21 октября 2019

Я создаю модель соединения Пригласить для has_many через отношения с Party и Guest, но я получаю пустые параметры [: party_id]. Пользователь вошел в систему как гость, и гость может видеть весь список участников, а гость может щелкнуть отдельную группу, и есть ссылка для присоединения к группе. Когда гость нажимает «Присоединиться к этой вечеринке», он переходит в «/ party / 2 / invites / new», и у меня есть форма, которую гость может заполнить. Я застреваю, когда гость отправляет форму. URL-адрес изменился на «/ party / 2 / invites», но я все еще вижу представление формы, и после обновления страницы отображается страница индекса приглашения.

Я помещаю binding.pry в invites # create и набираю params, я вижу party_is "". и я вижу "commit" => "Join!", "controller" => "invites", "action" => "create", "party_id" => "3"} разрешено: false>.

def new
    @invite = Invite.new
    @party_id = params[:party_id]

  end

  def create
    @invite = Invite.new(invite_params)
    binding.pry
    if @invite.save

       redirect_to guest_invites_path(current_user)
    else
      @party = Party.find(params[:party_id])
      render :new
    end
  end

private

  def invite_params
    params.require(:invite).permit(:add_on, :rsvp, :guest, :party_id)
  end
<%= form_with model: @invite, url: [@party, @invite], local: true do |f| %>
<%= f.label :add_on, "Add On" %>
<%= f.select :add_on, [1, 2, 3, 4], :prompt => 'Select One' %><br>

<%= f.label :rsvp, "RSVP" %>
<%= f.select :rsvp, [['Yes', true], ['No', false]], :include_blank => true %>

<%= f.hidden_field :party_id, :value => @party_id %>

<%= f.submit "Join!" %>
<% end %>
class Invite < ApplicationRecord
    belongs_to :party
    belongs_to :guest

    validates :add_on, :rsvp, presence: true
    accepts_nested_attributes_for :guest, :party
end

[4] pry (#)> поднять params.inspect RuntimeError: "68nwEzR31GS2mcJGq9WhUrP0sp9zSjZENqY4 / iosH8sn0zHRxz + PRXXWsQVJDGrs" 1/1 "" C1 + "=" 1=> "true", "party_id" => ""} разрешено: false>, "commit" => "Join!", "controller" => "invites", "action" => "create", "party_id"=> "3"} разрешено: false> from (pry): 4: в `create '

1 Ответ

0 голосов
/ 21 октября 2019

Внесите некоторые изменения в свой код

Из вашей формы удалите эту строку

<%= f.hidden_field :party_id, :value => @party_id %>

и затем в вашем контроллере переписайте вашcreate метод для этого

def create
  @party = Party.find(params[:party_id])
  @invite = Invite.new(invite_params)
  @invite.party_id = @party.id 
  if @invite.save

    redirect_to guest_invites_path(current_user)
  else
    render :new
  end
end

Итак, поскольку в вашем URL уже есть party_id, вам не нужно вводить его в форму. Попробуйте это и дайте мне знать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...