Ruby on rails 为自定义操作定义控制器似乎不起作用
大家好, 我已经在我的项目中实现了rails管理,现在有两件事我目前还没有解决Ruby on rails 为自定义操作定义控制器似乎不起作用,ruby-on-rails,rails-admin,Ruby On Rails,Rails Admin,大家好, 我已经在我的项目中实现了rails管理,现在有两件事我目前还没有解决 我希望在rails管理员中我的用户控制器的列表视图中有一个链接(标记为Publisher)作为ajax链接,这是在rails中使用remote=>true完成的,然后在rails中为其编写相关联的jscode和html代码 对于上面的自定义操作“将\u标记为\u publisher”,我定义了如下配置设置 require "rails_admin_mark_as_publisher/engine" module R
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
<%= 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%>
内部config/rails\u 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
<%= 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%>
要求“rails\u admin\u mark\u as\u publisher/engine”
模块RailsAdminMarkAsPublisher
结束
需要“rails\u admin/config/actions”
模块RailsAdmin
模块配置
模块动作
类markaspublisher true)
flash[:success]=t(“admin.flash.successful”,:name=>@model\u config.label,:action=>t(“admin.actions.mark\u as\u publisher.done”))
重定向路径=索引路径
其他的
flash[:error]=t(“admin.flash.error”,:name=>@model\u config.label,:action=>t(“admin.actions.mark\u as\u publisher.done”))
重定向路径=返回或索引
结束
结束
结束
结束
结束
结束
结束
结束
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
<%= 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_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
mark_as_publisher的get和post url确实位于上面的控制器define下,保存上述表单会导致调用错误
找不到“/user/5/mark\u as\u publisher”的路由:方法=>“post”
有没有人知道我遗漏了什么很抱歉延迟回复,但我也遇到了完全相同的问题 编辑:我注意到你已经有了这个,你试过重新启动你的服务器吗 如果您添加以下内容,它将修复它
register_instance_option :http_methods do
[:get,:post]
end
默认情况下,问题是操作
仅响应:get请求
如果你跑
rake routes
你会看到一些类似的东西
mark_as_publisher_path GET /:model_name/:id/mark_as_publisher(.:format) rails_admin/main#mark_as_publisher