为自定义操作定义Controller似乎不起作用Rails管理员

时间:2012-07-23 16:53:06

标签: ruby-on-rails rails-admin

大家好,

我在我的项目中实现了rails admin现在有几件事我目前停留在

  1. 我想要一个链接(标记为发布者)在列表视图中我的用户控制器在rails admin中作为ajax链接使用 remote =>完成的操作在其后写入关联的jscode和html代码的rails中的

  2. 对于上述自定义操作“ mark_as_publisher ”我定义了这样的配置设置

    config / rails_admin.rb

     config.actions do 
    
            # root actions
          dashboard                     # mandatory
          # collection actions 
          index                         # mandatory
          new
          export
          history_index
          bulk_delete
          # member actions
          show
          edit
          delete
          history_show
          show_in_app
          member :mark_as_publisher
     end
    

    现在,自定义操作的定义如下所示

    require "rails_admin_mark_as_publisher/engine"
    
    module RailsAdminMarkAsPublisher
    end
    
    require 'rails_admin/config/actions'
    
    module RailsAdmin
      module Config
        module Actions
          class MarkAsPublihser < Base
            RailsAdmin::Config::Actions.register(self)
    
            register_instance_option :collection do
              true
            end
    
            register_instance_option :http_methods do
              [:get,:post]
            end
    
            register_instance_option :route_fragment do
              'mark_as_publisher'
            end 
    
            register_instance_option :controller do
              Proc.new do
                binding.pry
                if request.get?
                  respond_to do |format|
                    format.html { render @action.template_name} 
                  end
                elsif request.post?
                  redirect_path = nil
                  if @object.update_attributes(:manager => true)
                    flash[:success] = t("admin.flash.successful", :name => @model_config.label, :action => t("admin.actions.mark_as_publisher.done"))
                    redirect_path = index_path
                  else
                    flash[:error] = t("admin.flash.error", :name => @model_config.label, :action => t("admin.actions.mark_as_publisher.done"))
                    redirect_path = back_or_index
                  end
                end  
              end
            end  
          end
        end
      end
    end
    
  3. 现在 app / view / rails_admin / main / mark_as_publisher.erb 中相同定义的视图看起来像这样

    <%=  rails_admin_form_for @object, :url => mark_as_publisher_path(:model_name => @abstract_model.to_param, :id => @object.id), :as => @abstract_model.param_key,:method => :post ,:html => { :class => "form-horizontal denser", :data => { :title => "Mark" } } do |form| %>
      <%= form.submit "save" %>
    <%end%>
    

    mark_as_publisher的get和post url确实由上面的控制器定义并保存上面的表单结果,错误名为

    could not find routes for '/user/5/mark_as_publisher' :method => "post"

    有没有人知道我缺少什么

1 个答案:

答案 0 :(得分:1)

很抱歉延迟回复,但我也遇到了同样的问题。

编辑:我注意到你已经有了这个,你试过重启服务器了吗?

如果添加以下内容,则会修复它。

  register_instance_option :http_methods do
      [:get,:post]
  end

默认情况下,问题Actions仅响应:get requests。

如果你跑

 rake routes 

你会看到

的内容
  mark_as_publisher_path     GET     /:model_name/:id/mark_as_publisher(.:format)    rails_admin/main#mark_as_publisher

https://github.com/sferik/rails_admin/blob/master/lib/rails_admin/config/actions/base.rb#L89