Контроллер не передает пользовательский экземпляр в приложение rails

Я использую многошаговый контроллер wicked gem, и я не могу передать пользовательский экземпляр форме в моем представлении.

signup_step_controller

class Tenants::SignupStepsController < ApplicationController   
 include Wicked::Wizard   
 before_action :authenticate_tenant!

  steps :account_link, :ach_setup, :payee_setup, :goal_setup

  def show
    @tenant = current_tenant
    case step
      when :account_link
        @tenant.accounts.build if @tenant.accounts.blank?
        @tenant.update_attributes(params[:accounts_params])
        if @tenant.account.exchange_token.present?
            skip_step
        end
      when :payee_setup
        @tenant.payees.build if @tenant.payees.blank?
        @tenant.payments.build if @tenant.payments.blank?
      when :goal_setup
        @tenant.build_escrow if @tenant.escrow.blank?
    end
    render_wizard @tenant   
  end

Посмотреть

<%= form_for @tenant, url: wizard_path(@tenant), method: :put, validate: true do |a| %> <!--fix this current_tenant not bing passed -->
  <%= a.fields_for :accounts do |f| %>
   <%= devise_error_messages! %>
  <span class="form-group">
    <%= f.label :bank_routing_number %>
    <%= f.text_field(:routing, class: "sexy-input col-4") %>
...

Я получаю следующую ошибку...

No route matches {:action=>"show", :controller=>"tenants/signup_steps", :id=>nil}

Однако, если я изменю форму на...

<%= form_for current_tenant, url: wizard_path(current_tenant), method: :put, validate: true do |a| %>

Тогда форма работает, но я не могу понять, почему контроллер не передает арендатора или пользователя.

Еще кое-что...

Моя форма сидит в частичном на вызываемом представлении...

<div class="col-lg-12">
      <h1>Complete this form to setup basic ACH payment services</h1>
      <div class="columns">
        <%= render '_basic_ach_form.html.erb' %>
      </div>

Нужно ли передавать экземпляр @tennat в частичное?

0 ответов

Другие вопросы по тегам