我是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"}
有什么想法吗?提前致谢
答案 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中了解详情。