Отправка form_with (или форма _for) с вложенными ресурсами является маршрутизацией на неправильный контроллер - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь отправить форму методом показа.Независимо от того, что я делаю, он не переходит к правильному контроллеру и всегда возвращается обратно к методу show.Проблема в том, что он должен идти к методу создания LeadsController, а не к методу show JobListingsController.Вот мой код

маршруты

resources :job_listings do 
  resources :leads
end

job_listings_controller

class JobListingsController < ApplicationController
  before_action :find_listing, only: [:show, :update, :edit, :destroy]
  before_action :authenticate_user!, except: [:index, :show]

  def index
    @job_listings = JobListing.all.order("created_at DESC")
  end

  def new
    @job_listing = current_user.job_listings.build
  end

  def create
    @job_listing = current_user.job_listings.new(job_listing_params)

    respond_to do |format|
      if @job_listing.save
        format.html {redirect_to root_path}
      else
        format.js {render 'job_listings/new'}
      end
    end
  end

  def show
  end

  #...

  private

  #...

  def find_listing
    @job_listing = JobListing.find(params[:id])
  end
end

приводит_контроллер

class LeadsController < ApplicationController
  include LeadsHelper
  before_action :authenticate_user!, only: [:index]
  before_action :find_admins, only: [:create]
  before_action :find_job_listing, only: [:create, :new]

  def index
    @leads = Lead.joins(:job_listing).order("created_at DESC")
  end

  def new
    @lead = Lead.new
  end

  def create 
    @lead = Lead.new(lead_params)

    respond_to do |format|
      if @lead.save
        send_emails_to_leads_admins
        set_cookie
        format.html {redirect_to root_path}
      else
        format.js {render 'leads/new'}
      end
    end
  end

  private

  def lead_params
    params.require(:lead).permit(:first_name, :last_name, :email, :file, :phone, :job_listing_id)
  end

  #...

  def find_job_listing
    @job_listing = JobListing.find(params[:job_listing_id])
  end
end

форма

<%= form_with( model: [@job_listing, Lead.new]) do |form| %>

Я сделалправильные ассоциации, Lead принадлежит: a: job_listing и Joblisting has_many: приводит.

Я перепробовал все, что мог найти, но независимо от того, что я делаю, результат один и тот же. Просмотр консоли

Любые советы или рекомендации помогут!

1 Ответ

0 голосов
/ 07 декабря 2018

Убедитесь, что ваша форма не встроена в другую форму.

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