【发布时间】:2015-11-02 07:31:42
【问题描述】:
我发现了这个:Passing javascript variables to rails controller
...我一直在尝试做同样的事情,即
window.open("http://localhost:3000//controller/index?location="+location,"_self")
我的控制器:
class FindMeController < ApplicationController
def index
location = params[:location]
@snake = Snake.where(location: location)
if @snake.save
redirect_to root_url
else
redirect_to root_url
end
end
但是,我总是收到“没有路线匹配错误”。我知道这可能很简单,但我还不知道如何解决它。
我尝试将 window.open 行中的“控制器”更改为实际的控制器名称 -“find_me_controller”,但没有奏效。我也尝试省略 localhost,只执行 '/controller...' 但这也无济于事。
谁能解释这个错误意味着什么以及我该如何解决它。
谢谢。
编辑:
好的,我已经在 routes.rb 中添加了这个:
获取“FindMeController/index”,到:“find_me_controller#index”
现在该行
window.open("http://localhost:3000//FindMeController/index?location="+countryLoc+",_self")
...但是现在我有一个新错误:未初始化的常量 FindMeControllerController
另外,rake 路线没有给出:
FindMeController_index GET /FindMeController/index(.:format) find_me_controller#index
EDIT2:
我已经销毁了 find_me 控制器并生成了一个蛇形控制器并复制到旧的索引操作中,但现在有很多以前没有的错误。它为我的控制器显示“home/samuel/Code/VenomApp/VenomRails/app/controllers/snakes_controller.rb:10:语法错误,意外的输入结束,期待keyword_end”:
class SnakesController < ApplicationController
def index
location = params[:location]
@snake = Snake.where(location: location)
if @snake.save
redirect_to root_url
else
redirect_to root_url
end
end
我不明白。为什么它会转到我的控制器而不是我的蛇#index 视图???
【问题讨论】:
-
你能粘贴实际的网址吗?我假设类似:localhost:3000/find_me/index?location="+location", _self
-
您可以尝试将您的路线重命名为其他名称吗?像在 config/routes.rb 中这样:get 'myfind' => 'find_me#index' 然后尝试以 myfind_path 访问操作
-
哦!作为观察问题,您控制器的上述代码缺少一个“结束”语句!!! if-else 没有匹配的“结束”!这对于您的编辑都是如此:FindMeController 和您的 SnakesController :)
-
啊,我注意到了。我尝试这样做的原因是因为我想使用 JS 认为它会更容易,但似乎有一些宝石可以让地理定位变得容易,所以我会研究它们,这种方法似乎更尴尬 - 非常感谢不过你的帮助。
标签: javascript ruby-on-rails controller routes