【问题标题】:Ruby On Rails Routes ProblemRuby On Rails 路由问题
【发布时间】:2009-10-02 16:27:10
【问题描述】:

我已经开始学习 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"

没有问题。

有人知道我做错了什么并对我有什么建议吗?

干杯

伊夫

【问题讨论】:

    标签: ruby-on-rails routing


    【解决方案1】:

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

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

    如果您没有随表单提交的查询 ID,那就让它吧:

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

    重启服务器。

    这是因为默认的 map.resources 只为您提供了 7 条资源路由:

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

    现在您想要一个名为execute 的新路由,那么您需要按照上述说明扩展路由。

    【讨论】:

    • 为快速响应干杯!现在工作正常。再次感谢!!
    【解决方案2】:

    您是否在 config/routes.rb 文件中创建了对应于 :controller => "queries", :action => "execute" 的路由?

    我猜你有这样的路线:

    map.resources queries
    

    这告诉 Rails 为该模型定义一些 RESTful 路由。当您尝试引用另一条路线时,Rails 找不到它并请求它。

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

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

    然后它将正确地映射到您的操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 2011-01-31
      • 2011-04-17
      • 1970-01-01
      相关资源
      最近更新 更多