如何在Child控制器中查看Parent?

时间:2012-05-14 02:55:38

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

我收到了错误:

ActiveRecord::RecordNotFound in ShoesController#choose_store_shoes

Couldn't find Store without an ID

请注意,shoes属于Store。这一切都发生在鞋子控制器中,从see_shoes操作开始,然后当用户点击Store时,它会使用choose_store_shoes操作。这应该显示商店和鞋子。我只需要帮助实际访问该页面。

ShoesController

  def see_stores
   @stores = Store.paginate(:page => params[:page], :per_page => 20)
  end

  def choose_store_shoes
   @store = Store.find(params[:id])
  end

我的路线:

resources :shoes do
  collection do
     get 'see_stores'
     get 'choose_store_shoes'
  end
end

然后我点击商店的视图,它应该显示它:

<% for store in @stores %>
   <%= link_to choose_store_shoes_shoes_path(store.id) do %>
      <%= store.name %>
      <%= store.location %>
   <% end %>
<% end %>

我认为我正在链接或错误地路由它。什么是正确的方式?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

你正在解析:id,当url方案中没有:id时。你需要修理你的路线。

在您的routes.rb中,将collection do更改为member do,以便网址方案接受:id。

对路线进行此更改后,您可以使用正确的ID指定所需的商店:127.0.0.1:3000/shoes/:id/choose_store_shoes