【问题标题】:No route matches (rails)没有路线匹配(轨道)
【发布时间】:2014-03-24 00:20:30
【问题描述】:

我正在尝试在我的 rails 应用程序中创建一个指向另一个页面的简单链接,但它似乎不起作用。即使我为我的帖子索引页面配置了一条路线,它也会给我以下错误:

No route matches {:action=>"posts", :lat=>5, :controller=>"coordinates"}

这是我的目录结构:

我的 routes.rb 文件

HighwayPolice::Application.routes.draw do

resources:posts
resources:coords
resources:coordinates
get 'posts', to: 'posts#index'  
end

../app/views/coordinates/index.html.erb

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <script type="text/javascript"
      src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCThq7kV6r4-cILKpujZek5e-uZGbGdjkU&sensor=false">
    </script>
    <script type = "text/javascript">
     function initialize()
     {console.log("click");
    var mapOptions = {
    center: new google.maps.LatLng(-34.397, 150.644),
    zoom: 8
    };
    var map = new google.maps.Map(document.getElementById("map-canvas"),
    mapOptions);


google.maps.event.addListener(map, 'click', function(event) {
console.log(event.latLng.k);
});
var test = 3;
$('#Test').val(test);
console.log(test);
var lat = 3
        var lon = 34
        var parsed_data = {location: {lat: lat, lon: lon}}

}

</script>


<h1>Coordinates#index</h1>
<body onload = "initialize()">
<div id="map-canvas" style = "width:500px; height:500px"></div>
<p>Find me in app/views/coordinates/index.html.erb</p>
<% @coordinates.each do |coordinate| %>
<p><%= coordinate.longitude %></p>
<p><%= coordinate.lattitude %></p>
<hr />
<% end %> 
<%= link_to('Save',{:action => 'post', :lat => 5}) %>

posts_controller.rb

 class PostsController < ApplicationController
    def index

    end
   end

【问题讨论】:

  • 你的坐标控制器有一个posts方法正确吗?
  • 另外,您也没有在路线中表明您在坐标控制器中有发布操作。你可以通过做添加一个。资源:坐标做成员:帖子结束

标签: ruby-on-rails ruby-on-rails-3


【解决方案1】:

您当前的链接正在尝试发布到坐标控制器发布操作。

如果您想按照路由控制器中指定的方式发布到帖子控制器,请尝试类似

link_to "Save", controller: :posts, action: :index, lat: 5

【讨论】:

    【解决方案2】:

    如果您尝试在坐标控制器上执行发布请求,请使用 method: :post 而不是 :action =&gt; 'post'

    如果您尝试在坐标控制器中将数据发布到名为“发布”的操作,那么您应该在路线文件的顶部添加一个匹配的,因为resources: coordinates 只会添加 CRUD 操作(请参阅此链接中的第 2.5 节[ http://guides.rubyonrails.org/routing.html] 的完整方法列表)在坐标控制器上。所以你应该在路由文件的顶部添加match 'coordinates/post' to 'coordinates#post', via: :post

    【讨论】:

      猜你喜欢
      • 2017-03-18
      • 2012-10-15
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 2023-03-12
      相关资源
      最近更新 更多