所以我目前正在尝试使用RoR实现来映射我的建筑物的网络。我有一个很好的平面图,我也为它创建了开关对象。最终,交换机将有许多插孔,每个插孔将与房间号码一对一地映射。
目前一切都在地板和开关之间完美运行,直到我尝试单独显示开关。我试图通过在单独的控制器中使用show方法来做到这一点。最初地板控制器负责,但现在我想要开关控制器。
这是我的部分切换代码(apps / views / switch / _switch.html.erb):
<p>
<%= switch.title %>
<%= link_to 'show', :controller => "switches", :action => 'show' %>
<%= link_to 'Destroy', [switch.floor, switch],
:confirm => 'Are you sure?',
:method => :delete %>
</p>
这是我的show方法(apps / controllers / switches_controller.rb):
...
def show
@floor = Floor.find(params[:floor_id])
@switch = @floor.switches.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render :json => @switch }
end
end
...
当我没有在部分标记交换机控制器时,每当我点击显示该链接充当返回同一页面的链接...基本上只是刷新。当我标记开关控制器时,我得到'No route matches [GET]“/ assets”'错误。
我尝试过MULTIPLE不同的语法,但没有任何工作。如果有人能帮助我,我会非常感激!!
如果有必要发布更多我的代码,请告诉我。
答案 0 :(得分:1)
您可以运行'rake routes '命令列出所有可用的路由选项,并建议您使用url / path,而不是为各个链接指定控制器和操作。
我假设您已经为楼层和交换机设置了嵌套路由,然后获取此URL,即
/floors/:floor_id/switches/:id/show
你可以使用
<%= link_to "Switch", floor_switch_path(switch.floor, switch) %>
答案 1 :(得分:0)
&#39;显示&#39;用于显示特定元素的方法。在你的情况下特别切换。所以你需要发送:id给你的控制器,比如这个
link_to "Switch", :controller => "switches", :action => "show", :id => switch