我正在尝试创建一个带有按钮的视图,该按钮调用Redmine插件的控制器动作(不幸的是,我在Rails上还很陌生)。我需要为我的控制器(这里是控制器)创建一个方法,以便我可以更新一些活动记录。
我创建了一个控制器:
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
}
%>
但它会在“项目”控制器中查找操作
ActionView::Template::Error (No route matches {:action=>"1", :controller=>"projects", :id=>"prova", :method=>:post}):
如何使button_在prova
控制器中调用正确的RedmineAController
方法?
在此先感谢您的帮助。
答案 0 :(得分:0)
在 routes.rb 文件中添加路由
resources :redmine_as do
collections do
post :a
end
end
在那之后,请通过在命令下面的终端上键入来细化Routes网址
rake routes | grep p
在“链接”或按钮中设置网址
link_to "Your Link Name", p_redmine_as_path
p_redmines_path ,它将通过“耙路”返回 | grep p“命令。
答案 1 :(得分:0)
正如Ketan所说,我错过了一条路线!
我放入了route.rb:
resources :important_user do
collection do
post :u_update
end
end
并在我的控制器中:
def u_update
puts params[:p_id]
puts "update!"
end