我正在尝试创建一个带有按钮的视图,该按钮调用Redmine插件的控制器操作(不幸的是,我在Rails上很新)。我需要为我的控制器(这里是一个控制器)创建一个方法,这样我就可以更新一些Active Records。
我创建了一个控制器:
redmine_a_controller.rb
class RedmineAController < ApplicationController
def prova(input)
puts input
return input
end
def p
puts 'vuoto'
returns 'vuoto'
end
end
从控制台调用时,操作正常工作。不幸的是,从我的视图_a.html.erb调用时:
<%=
button_to l(:imp_update), {
:controller => 'RedmineAController',
:action => 'p',
method: :post
}
%>
它返回此错误:
ActionView::Template::Error (No route matches {:action=>"p", :controller=>"RedmineAController", :id=>"prova", :method=>:post, :tab=>"important_users"}):
我尝试通过调用新实例上的操作:
<%=
button_to l(:imp_update), {
:action => RedmineImportantUsersController.new.prova(1),
method: :post
}
%>
但它会在Projects控制器中查找操作
ActionView::Template::Error (No route matches {:action=>"1", :controller=>"projects", :id=>"prova", :method=>:post}):
如何让button_to在prova
控制器中调用正确的RedmineAController
方法?
在此先感谢您的帮助。
在routes.rb文件中添加路由
resources :redmine_as do
collections do
post :a
end
end
之后,请在下面的终端命令中输入路由网址
rake routes | grep p
在链接或按钮中设置URL
link_to "Your Link Name", p_redmine_as_path
p_redmines_path它将通过“rake routes | grep p”命令返回。
正如Ketan所说,我错过了一条路线!
我输入了我的routes.rb:
resources :important_user do
collection do
post :u_update
end
end
在我的控制器中:
def u_update
puts params[:p_id]
puts "update!"
end