首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ActiveAdmin面板使用link_to执行控制器操作

使用ActiveAdmin面板使用link_to执行控制器操作
EN

Stack Overflow用户
提问于 2015-01-27 09:36:33
回答 1查看 2.6K关注 0票数 0

我有Rails 4ActiveAdmin插件。

在广告控制器中,我有三种方法。Bassicaly,我想添加管理功能,以延长广告到期日期。有三种选择:

代码语言:javascript
复制
 def add_two_weeks(advertisement)
   @advertisement = advertisement
     @advertisement.expiration = @advertisement.expiration + 14.days                    
          @advertisement.save 
 end

 def add_eight_weeks(advertisement)
     @advertisement = advertisement
       @advertisement.expiration = @advertisement.expiration + 56.days                    
          @advertisement.save 
 end

 def add_max_weeks(advertisement)
      @advertisement = advertisement
       @advertisement.expiration = @advertisement.expiration + 168.days                    
          @advertisement.save 
 end

admin/advertisement.rb

代码语言:javascript
复制
 ActiveAdmin.register Advertisement do
  scope :all, default: true


  scope :blacklisted do |advertisements|
    advertisements.where("in_blacklist= ?", true).where("admin_confirmed= ?", true)
  end

  scope :waiting_to_blacklist do |advertisements|
    advertisements.where("in_blacklist= ?", true)
  end

  scope :paid do |advertisements|
    advertisements.where("paid= ?", true)
  end




index :as => :grid do |product|
    div do
      a :href => admin_advertisement_path(advertisement) do
        image_tag(advertisement.photo.url(:thumb))
      end
    end
    a truncate(advertisement.name), :href => admin_advertisement_path(advertisement)
  end


  index do
    column :name
    column "Price", sortable: :price do |advertisement|
       advertisement.price
    end
    default_actions
  end


 form do |f|
   f.inputs 'User data' do
         f.input :name
         f.input :email
         f.input :country
         f.input :description
         f.input :description_ru

   end 

     f.inputs 'Additional data' do
         f.input :expiration
         f.input :highlight
         f.input :recomend
         f.input :vip_highlight
         f.input :vip_recomend
   end


  f.inputs 'Blacklist (Information: Both checkboxes need to be checked to blacklist user! )' do

         f.input :in_blacklist
         f.input :admin_confirmed
   end 

   f.inputs 'Change password' do
      f.input :password
      f.input :password_confirmation
  end
  f.actions
end


 show do
   member_action do
        link_to "add 2 weeks", advertisements_add_two_weeks_path(advertisement)
     end

     panel "Recent Reviews" do

          table_for advertisement.reviews.each do |review|
             column(:user)    {|review| link_to(review.user.name, admin_user_path(review.user)) }
             column(:content)    {|review| review.content}
             column("Created at")   {|review| review.created_at.strftime("%B %d, %Y %H:%M")                      }

          end

      end

  end

  sidebar :advertisement_information, :only => :show do
    attributes_table_for advertisement do

      row("User") { auto_link advertisement.name }
      row :email
      row :in_blacklist
      row :admin_confirmed
      row :created_at
    end
  end

  permit_params :name, :email, :country_id, :in_blacklist, :admin_confirmed, :password, :password_confirmation


end

Error:未定义的方法`member_action‘

我从here那里学到了一些想法,但无法理解这方面的原理。所以我即兴创作了。

我不知道这是做这种事的方法,还是我需要完全不同的方法?我是ActiveAdmin的新手,请多关照。

任何帮助都会很好。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-27 10:04:10

首先,member_action表示Do operation with single record from perticular one row,collection_action表示Do operation with all records

您可以这样编写member_action:

代码语言:javascript
复制
member_action :send_push_notification do
    user = User.find(params[:id])
    redirect_to :action => :show
end

如果您需要perticular链接(在图像中,我已将链接更改为带有css的按钮),除了查看、编辑、删除,如下所示:

然后使用这个:

代码语言:javascript
复制
actions defaults: true do |gift|
    link_to 'Send Push Notification', send_push_notification_path
end

对于链接操作路径,在控制器中创建一个def(此处: send_push_notification),然后从这里重定向到admin。

如果你需要更多的话请告诉我。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28167186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档