Ruby on Rails中的路由错误“action:show”

时间:2012-03-11 23:54:40

标签: ruby-on-rails ruby

我是RoR的新手,我正在尝试制作一个master-datail: 用户 -Lugar(地点)

My Routes.rb

  resources :users do
    resources :lugars
  end

我的控制器lugars

class LugarsController < ApplicationController 
  def create
    @user = User.find(params[:user_id])
    @lugar = @user.lugars.create(params[:lugar])
    redirect_to account_url
  end

  def destroy
    @user = User.find(params[:user_id])
    @lugar = @user.lugars.find(params[:id])
    @lugar.destroy
    redirect_to account_url
  end

  def edit
    @user = User.find(params[:user_id])
    @lugar = @user.lugars.find(params[:id])
  end

  def show
    @user = User.find(params[:user_id])
    @lugar = @user.lugars.find(params[:id])
  end

  def index
    @user = User.find(params[:user_id])
    @lugar = @user.lugars.all
  end
end

我的观点

....
    <% @user.lugars.each do |lugar| %>
      <tr>
        <td><%= lugar.nombre %></td>
        <td><%= lugar.telefono %></td>
        <td><%= lugar.direccion %></td>
        <td><%= lugar.numero %></td>
        <td><%= lugar.localidad %></td>
        <td><%= lugar.provincia %></td>
        <td><%= link_to "Editar",  user_lugar_path %></td>
        <td><%= link_to "Eliminar", [lugar.user , lugar], :method => :delete %></td>
      </tr>
    <% end %>
....

我在我的lugars视图“show.html.erb”中创建并清空了文件,但是当我进入页面时总是得到:

Routing Error

No route matches {:action=>"show", :controller=>"lugars"}

有什么想法吗?提前致谢

1 个答案:

答案 0 :(得分:4)

您在没有ID /对象的情况下调用user_lugar_path,因此它不知道要路由到哪个单独的资源。由于资源是嵌套的,因此您必须将lugar本身传递给它,并将user嵌套在以下位置:

link_to "Editar", user_lugar_path(@user, lugar)

您也可以简单地传递link_to个对象:

link_to "Editar", [@user, lugar]

您可以在Rails Guides on routing中了解详情。