Ruby On Rails路由问题

时间:2009-10-02 16:27:11

标签: ruby-on-rails routing

我已经开始学习Rails了,直到现在它一直很好。

我正在使用HAML并将其放在我的index.haml

= submit_to_remote "submit_btn", "Create", :url => {:controller => "queries", :action => "create"}, :method => "post"

= submit_to_remote "exe_btn", "Execute", :url => {:controller => "queries", :action => "execute"}, :method => "post"

尝试运行时,它会让我回复此错误

No route matches {:controller=>"queries", :action=>"execute"}

我删除此行

= submit_to_remote "exe_btn", "Execute", :url => {:controller => "queries", :action => "execute"}, :method => "post"

它没有问题。

有谁知道我做错了什么,对我有什么建议吗?

干杯

EEF

2 个答案:

答案 0 :(得分:4)

修改config / routes.rb中的queries资源

map.resources :queries, :member => { :execute => :post}

如果您没有随表单提交的查询ID,请将其包含在内:

map.resources :queries, :collection => { :execute => :post}

重启服务器。

这种情况正在发生,因为默认map.resources只为您提供了7条资源路径:

索引,新建,创建,编辑,更新,显示和删除。

现在您需要一条名为execute的新路线,然后您需要按照上述说明扩展路线。

答案 1 :(得分:0)

您是否在config / routes.rb文件中创建了一个路径,该路径对应于:controller => “queries”,:action => “执行”?

我猜你有一条路线:

map.resources queries

这告诉Rails为该模型定义一些RESTful路由。当您尝试引用其他路由时,Rails无法找到它并请求它。

您应该使用以下方法修复它:

map.resorces queries, :member => {:execute => :post}

然后会将其正确映射到您的操作。