我是一个Rails新手,我挣扎似乎是一个路由错误。ActiveRecord :: RecordNotFound为一个对象,明显的路由错误
我有一个Site对象,它包含有关网站的信息以及如何对其进行爬网。我想测试我的代码与网站的连接。在我的应用程序点击 “测试网站” 创建了一个错误:
Couldn't find Site without an ID app/controllers/sites_controller.rb:86:in `test_site'
的routes.rb:
...
post "/test_site" => "sites#test_site"
get "home/index"
resources :sites, :logins
...
index.html.erb
...
<% @sites.each do |site| %>
<tr>
<td>
<%= form_tag test_site_path(site) do -%>
<div><%= submit_tag 'Test site' %></div>
<% end -%>
...
sites_controller.rb
...
def test_site
@site = Site.find(params[:id])
...
看起来站点控制器没有从test_site_path(站点)获取Site:id。我不知道如何设置路线并正确传递ID。
谢谢!
编辑:我试图将此代码添加到我的routes.rb:
resources :sites do
get "/test_site", :action => "test_site", :on => :member
end
我得到这个错误:
No route matches {:controller=>"sites", :action=>"test_site", :format=>#<Site id: 11, ...
什么可能我是做错了什么?
我没有看到“post”/ test_site“'带有一个id。无论如何,为什么不[添加RESTful动作](http://guides.rubyonrails。org/routing.html#adding-more-restful-actions)并且不用担心手动定义路由参数?! – 2013-03-24 00:54:26
嗨Dave,我试着用几种方法添加一个RESTful动作,并没有想出如何正确地做到这一点。你介意发布代码来做到这一点? – mjgold 2013-03-24 01:01:21
在站点资源块中添加'get'test_site',:on =>:member'。 – 2013-03-24 01:06:12