2013-08-28 36 views
0
调用函数

你好,现在我有一个关于button_toRuby on Rails的 - button_to使用路线从控制器

我想设置一个按钮,在控制器调用一个方法问题,这是我怎么设置按钮:

(这个位于议题/ _edit.html.erb)

<%= button_to "Cancel Return", :action => "cancel_return", :controller => "issues" %> 

,我想这会调用这个函数在issues_controller.rb

def cancel_return 
    @issue.cancel_return(params) 
    end 

我还添加了它在routes.rb中

map.issue_cancel_return 'issues/cancel_return', :controller => 'issues', 
         :action => 'cancel_return' 

但它不能正常工作,我已经尝试过申报cancel_return的是helper_method,但它也没有工作。有没有其他解决方案?或者我做错了?我使用红宝石版本1.9.3p125和rails版本2.3.15,我使用旧版本,因为我试图修改redmine,任何帮助将不胜感激。

感谢

+0

是问题#cancel_return有效的路线?我还没有看到redmine的routes.rb,但你是否也有新的动作在那里,而不是将它添加到控制器中? – roninblade

+0

@roninblade其实我并不确定如何把它放在routes.rb中,我像这样添加它map.issue_cancel_return'issues/cancel_return',:controller =>'issues', :action =>'cancel_return' ,你也可以在编辑的问题 –

+0

中看到它,当你直接在浏览器上调用动作时会发生什么?即。 http://127.0.0.1:3000/issues/cancel_return/?plus_your_extra_params – roninblade

回答

2

你应该把它们放在一个大括号这样

<%= button_to "Cancel Return", { :controller => "issues", :action => "cancel_return"} %> 

什么情况是,map没有定义呼叫的方法类似GET/POST/DELETE 所以你可以做你的routes.rb文件被使用的,而不是你map线

get "issues/cancel_return" => "issues#cancel_return" 

这应该可以解决你的问题。

+0

仍然没有任何反应:(,我怎么知道函数旁边调用数据库更改?是否有任何方法像php print_r(“TEXT”);退出;在RoR?只是为了确保我的按钮工作 –

+0

看着你的服务器日志,这是什么请求正在发生,什么叫什么,什么不。 – dirtydexter

+0

我猜这不是所谓的最后3个动作显示在日志中,我点击按钮后处理IssuesController#显示(为172.16.20.1在2013-08-28 11:42:16)[GET] 参数:{“controller” =>“issues”,“action”=>“show”,“id”=>“833”} 布局中的渲染模板/ base 渲染问题/显示 408ms中完成(查看:65,DB:316)| 200 OK 你知道它为什么不被称为? –