Контроллер не передает пользовательский экземпляр в приложение rails - PullRequest
0 голосов
/ 20 октября 2018

Я использую многошаговый контроллер 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

View

<%= 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 в партиал?

...