1

所以我目前正在尝试使用 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>

这是我的显示方法(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
...

当我没有在部分中标记开关控制器时,每当我单击显示时,链接都会充当返回同一页面的链接......基本上只是刷新。当我标记开关控制器时,我收到“没有路由匹配 [GET]“/assets””错误。

我尝试了多种不同的语法,但没有任何效果。如果有人可以帮助我,我将非常感谢!

请让我知道是否有必要发布更多我的代码,我会的。

4

2 回答 2

1

您可以运行“rake routes ”命令来列出所有可用的路由选项,并建议您使用 url/path 而不是为单个链接指定控制器和操作。

我假设您已经为楼层和开关设置了嵌套路由,然后获取此 URL,即

/floors/:floor_id/switches/:id/show

您可以使用

<%= link_to "Switch", floor_switch_path(switch.floor, switch) %>

于 2012-06-12T01:17:05.197 回答
0

'Show' 方法用于显示特定元素。您的情况下的特定开关。所以你需要发送 :id 到你的控制器,像这样

link_to "Switch", :controller => "switches", :action => "show", :id => switch
于 2012-06-11T20:50:17.763 回答