在Rails Admin中保存后重定向到自定义操作

时间:2013-03-14 21:06:09

标签: ruby-on-rails redirect custom-action rails-admin

我一直在使用Rails Admin,我想在模型的创建和更新操作之后自定义重定向。

我创建了一个新的插件,我在后端设置了它。我可以单击选项卡,它会将我带到视图页面。我想要做的是重写编辑并创建操作以在保存/更新后重定向到此页面。

我在谷歌搜索过,但出于某种原因,我尝试的一切都行不通。任何见解都会受到欢迎。

谢谢。

=====

之后我正在尝试重定向到裁剪页面。我不确定我会把代码放在哪里。我把它放到下面的RailsAdminCrop模块中吗?如果是这样,怎么样?文档没有提到这一点。

配置:

require 'rails_admin/config/actions'
require 'rails_admin/config/actions/base'
require "rails_admin_crop/engine"

module RailsAdminCrop
end

module RailsAdmin
  module Config
    module Actions
      class Crop < RailsAdmin::Config::Actions::Base


        register_instance_option :member do
          true
        end

        register_instance_option :link_icon do
          'icon-th-large'
        end

        register_instance_option :controller do
         Proc.new do
           flash.now[:notice] = ": #{@object.title}." 
         end
       end


      end
    end
  end
end

或者通过将块传递给编辑操作将其放入rails_admin.rb初始化程序中?如果是这样,我会采用什么配置?

  module RailsAdmin
    module Config
      module Actions
        class Crop < RailsAdmin::Config::Actions::Base
          RailsAdmin::Config::Actions.register(self)
        end
      end
    end
  end

 config.actions do
    dashboard
    index
    new

    crop

    show
    edit
    delete
  end

rake路线后(这是默认路线):

Routes for RailsAdmin::Engine:
    dashboard GET         /                                      rails_admin/main#dashboard
        index GET|POST    /:model_name(.:format)                 rails_admin/main#index
          new GET|POST    /:model_name/new(.:format)             rails_admin/main#new
       export GET|POST    /:model_name/export(.:format)          rails_admin/main#export
  bulk_delete POST|DELETE /:model_name/bulk_delete(.:format)     rails_admin/main#bulk_delete
history_index GET         /:model_name/history(.:format)         rails_admin/main#history_index
  bulk_action POST        /:model_name/bulk_action(.:format)     rails_admin/main#bulk_action
         show GET         /:model_name/:id(.:format)             rails_admin/main#show
         edit GET|PUT     /:model_name/:id/edit(.:format)        rails_admin/main#edit
       delete GET|DELETE  /:model_name/:id/delete(.:format)      rails_admin/main#delete
 history_show GET         /:model_name/:id/history(.:format)     rails_admin/main#history_show
  show_in_app GET         /:model_name/:id/show_in_app(.:format) rails_admin/main#show_in_app

1 个答案:

答案 0 :(得分:0)

我不相信你可以通过配置来做到这一点,你需要扩展插件。此外,您只能使用一个redirect_to或每个操作渲染,因此您需要将操作分配给变量,然后在最后调用它。

register_instance_option :controller do
  Proc.new do

    flash.now[:notice] = ": #{@object.title}."

    if request.post? || request.put?
      some_action = "do_something"
    else
      some_action =  @action.template_name
    end

    render :action => some_action
  end
end