铁轨上的红宝石,没有路线匹配

时间:2015-11-28 12:57:22

标签: ruby-on-rails

我刚开始在rails上使用ruby,使用rubymine包并遵循教程。

我们创建了一个名为say的控制器,如下所示:

class SayController < ApplicationController
  def Hello
  end
end

我启动了rails服务器并在localhost:3000上获取了该页面,但当我尝试localhost:3000/say/hello时,我得到了:

No route matches [GET] "/say/hello"

我尝试将routes.rb内的文件config更改为:

root 'say#index'

但没有快乐,仍然是同样的错误。我希望我已经提供了足够的信息,感谢您的反馈。

2 个答案:

答案 0 :(得分:0)

当你跟随<form name="formName"> <div id="groupA"> GroupA checkbox list: <br> <input type='checkbox' name='groupA[]' value='Val1' onclick="onClickFunction()">Val1 <br> <input type='checkbox' name='groupA[]' value='Val2' onclick="onClickFunction()">Val2 <br> <input type='checkbox' name='groupA[]' value='Val3' onclick="onClickFunction()" checked>Val3 <br> <input type='checkbox' name='select_all_groupA' value='All' onclick="onClickFunction()" checked>All <br> </div> <div id="groupB"> GroupB checkbox list: <br> <input type='checkbox' name='groupB[]' value='ValX' onclick="onClickFunction()">ValX <br> <input type='checkbox' name='groupB[]' value='ValY' onclick="onClickFunction()" checked>ValY <br> <input type='checkbox' name='select_all_groupB' value='All' onclick="onClickFunction()" checked>All <br> </div> </form>

routes.rb

告诉我们,当用户访问root 'say#index' 时,它会调用/个控制器say操作。但是,因为您希望index路由调用&#39;说#index&#39;那么你的/say/hello应该是这样的:

routes.rb

如果您在窗口并获得get '/say/hello', to: 'say#Hello' ,那么您可以替换&#34; application&#34;用&#34;默认&#34;您的ExecJS::ProgramError或您可以在您的Gemfile中执行此操作:gem&#39; coffee-script-source&#39;,&#39; 1.8.0&#39;强制1.8.0,然后发出捆绑更新coffee-script-source。咖啡脚本来源&gt; = 1.9.0无法在Windows下正常运行。

答案 1 :(得分:0)

首先:将您的hello方法重构为全部小写,如下所示:

class SayController < ApplicationController
  def hello
  end
end

现在回答你的问题:

路径文件就像一个指南,它将给定的路径host/path/options映射到给定的控制器方法。 root 'say#index'其中say是您的控制器,index是指定控制器中的方法。

例如,将您拥有的路线作为实例,

root 'say#index'

表示将index控制器的say操作设置为默认路由。(在页面加载时)

  

但请注意,您index尚未执行SayController次行动

这样说,这意味着要将hello中的SayController操作作为默认路由,您需要执行以下操作:

root 'say#hello'

然后,当您转到localhost:3000时,您会看到您的页面。

另一方面,如果您不想将其作为根,则只需指定它将支持的http方法类型(get,{{1} },postput)如下:

delete

现在,当你转到get '/say/hello' => 'say#hello' 时,你会得到你的页面。

希望这足够说明......

相关问题