Rails ActiveAdmin - 编辑新的资源视图

时间:2014-07-25 09:52:41

标签: ruby-on-rails activeadmin

我将ActiveAdmin添加到我的应用程序并成功更改了我的资源的索引方法。现在,当我点击新资源'它让我对新方法很好,但是,有一个按钮缺失(回形针),以便允许用户上传图像附件。

我找不到编辑视图的方法,也没有办法完全重写新方法。

如果您需要我的任何代码,我可以在此处粘贴所有内容。

谢谢! //检查这篇文章的最底部是否有解决方案!

//这就是我尝试过的方式,但它没有用。我应用于' app / admin / entry.rb'因为我的索引方法有效,但是新的方法根本不起作用。

应用程序/管理/ entry.rb:

ActiveAdmin.register Entry do

  index do
    column :id
    column :description
    column :created_at
    column :image_content_type
    column do |entry|
      links = link_to "Edit", edit_admin_entry_path(entry)
      links += " "
      links += link_to "Delete", admin_entry_path(entry), :method => :delete, data: { confirm: "Are you sure?" }
      links
    end
  end

  def new
    form_for @entry, :html => {:multipart => true} do |f|
      f.label :description
      f.text_area :description
      f.file_field :image
    end
    f.submit 'Save'
  end

end

在我添加ActiveAdmin之前,我刚为Entry添加了一个脚手架并使用它: entries_controller.rb:

  def new
    @entry = Entry.new
  end

查看(new.html.slim):

h1 New entry

== render 'form'

= link_to 'Back', entries_path

呈现的表单(_form.html.slim):

= form_for @entry, :html => {:multipart => true} do |f|
  - if @entry.errors.any?
    #error_explanation
      h2 = "#{pluralize(@entry.errors.count, "error")} prohibited this entry from being saved:"
      ul
        - @entry.errors.full_messages.each do |message|
          li = message

  .field
    = f.label :description
    = f.text_area :description
    = f.file_field :image
  .actions = f.submit 'Save'

现在,虽然在转向localhost时仍然有效:3000 / entries / new它只显示localhost的默认视图:3000 / admin / entries / new

如果您有任何帮助,我们将非常感激! 有没有办法看到ActiveAdmin已经以某种方式使用的现有代码?我可以通过简单地添加我需要的一个字段来改变它的需要。

//解决方案:

的应用程序/管理/ resource.rb

ActiveAdmin.register Entry do
  permit_params :image, :description

  index do
    column :id
    column :description
    column :created_at
    column :image_file_name
    column :image_content_type
    column do |entry|
      links = link_to "Edit", edit_admin_entry_path(entry)
      links += " "
      links += link_to "Delete", admin_entry_path(entry), :method => :delete, data: { confirm: "Are you sure?" }
      links
    end
  end

  form do |f|
    f.inputs "New Entry" do
      f.input :description
      f.input :image
    end
    f.actions
  end



end

1 个答案:

答案 0 :(得分:3)

您可以自定义控制器操作和新资源视图。

编辑控制器中的新操作:

#app/admin/your_resource.rb

controller do
  def new
    @resource = Resource.new
    .... # Your custom logic goes here
  end
end

编辑新资源视图并使用回形针添加图像。

#app/admin/your_resource.rb

form html: { multipart: true } do |f|
  f.inputs "Resource Details" do
    f.input :title
    .... # Your input fields

    # This adds the image field. Be careful though 
    # the field name needs to be the same in your model

    f.input :image, as: :file, required: false
  end

  f.actions
end