Шаблон отсутствует в Ruby on Rails при использовании активного администратора - PullRequest
0 голосов
/ 23 ноября 2018

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

Отсутствует шаблон admin / vendor / update_add_staff, active_admin / resource / update_add_staff, active_admin / base / update_add_staff, унаследованные_ресурсы / base / update_add_staff, application / update_add_cat с {: locale => [: en],: format => [: html],: варианты => [],: обработчики => [: erb,: строитель,: сырье,: ruby,: coffee,: arb,: jbuilder,: slim,: csvbuilder]}.Поиск в: / Users / James / work-files / apps / views"/Users/james/.gem/gems/devise-4.0.3/app/views" * "/ Users / james /.gem / bundler / gems / apipie-rails-1f7d8419b7f4 / app / views "*" /Users/james/.gem/bundler/gems/activeadmin-09d00c2d9638/app/views "*" /Users/james/.gem/gems/kaminari-core-1.1.1 / app / views "

Ниже приведены коды:

Начиная с admin/vendor.rb

кнопка« добавить »подключается кэлемент действия:

  action_item :edit_add_staff, only: [:show, :edit] do
    link_to('Add cat', edit_add_staff_admin_vendor_path(resource))
  end

, затем элемент действия подключается к:

<%= simple_form_for([:admin, resource], url: update_add_staff_admin_vendor_path(resource), method: :put) do |f| %>
    <div class="input text optional">
        <label for="vendor_staff_users">Current Staff List</label>
        <div class="indent-display">
            <% resource.staff_users.each do |staff| %>
                ID: <%= staff.id %> | <%= staff.full_name %> <br/>
            <% end %>
        </div>
    </div>

    <div class="input optional">
      <label class="optional" for="vendor_staff_users">Staff ID</label>
      <%= text_field_tag('vendor[staff_user]') %>
      <span class="hint">Hint: Enter the staff user id</span>
    </div>

    <%= f.submit 'Add Staff' %>

  <% end %>

, затем он связан с:

member_action :update_add_staff, method: :put do
    u = User.find(params[:vendor][:staff_user])
    if u.staff_user == false
      u.staff_user = true
      u.vendor_id = id
      binding.pry
      u.save
    redirect_to admin_vendor_path(resource)
    end
  end

и это маршруты:

 resources :vendors, only: [:show, :update] do
    resources :users,         controller: 'vendors/vendor_users' do
      member do
        post :update_add_staff

Я надеюсь, что кто-то может мне помочь. Я не знаю, что делать

1 Ответ

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

@ Павел прав.Ваш member_action имеет оператор if.Если u.staff_user == false, то будет redirect_to admin_vendor_path(resource), что, я полагаю, работает.В противном случае не было выполнено рендеринга или перенаправления, поэтому по умолчанию рельсы будут пытаться выполнить рендеринг, и он попытается отрендерить действие update_add_staff.

. Чтобы решить эту проблему, вы можете добавить секцию else в свой оператор if.или переместите redirect_to за пределы блока if.

# This should resolve the issue
member_action :update_add_staff, method: :put do
  u = User.find(params[:vendor][:staff_user])
  if u.staff_user == false
    u.staff_user = true
    u.vendor_id = id
    binding.pry
    u.save
  else
    flash[:error] = "Access denied"
  end

  redirect_to admin_vendor_path(resource)
end
...