【问题标题】:Template is missing in Ruby on Rails using Active admin使用 Active admin 在 Ruby on Rails 中缺少模板
【发布时间】:2019-04-25 22:33:02
【问题描述】:

我的项目中有一个错误,在活动管理员中它一直告诉我缺少模板。帮助我想做什么是能够在活动管理员中添加一个员工用户

缺少模板 admin/vendor/update_add_staff, active_admin/resource/update_add_staff, active_admin/base/update_add_staff, 继承资源/基础/update_add_staff,应用程序/update_add_cat 使用 {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :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

希望有人可以帮助我,我真的不知道该怎么办

【问题讨论】:

  • 如果u.staff_user != false,你的action不会执行redirect

标签: ruby-on-rails ruby activeadmin


【解决方案1】:

@Pavel 是对的。您的 member_action 有一个 if 语句。如果u.staff_user == false,那么它将redirect_to admin_vendor_path(resource),我认为它正在工作。否则,不会发生渲染或重定向,因此 rails 将默认尝试渲染,它会尝试渲染动作 update_add_staff

要解决此问题,您可以在 if 语句中添加 else 部分,或将 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

【讨论】:

    猜你喜欢
    • 2011-07-03
    • 1970-01-01
    • 2017-12-06
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 2015-01-08
    相关资源
    最近更新 更多