Ruby on rails Rails链接到调用不正确的控制器操作
我的rails link_正在调用不同的控制器操作。我有一个下拉菜单,我想把_链接到网站的另一部分。但是,它调用帮助构建页面的控制器方法,而不是实际的控制器方法。这导致了一个问题,因为我没有将正确的信息传递到方法调用中以正确执行该调用。我已经得到这个确切的东西,以工作在我的网站的其他部分,但不能在这里 当调用Ruby on rails Rails链接到调用不正确的控制器操作,ruby-on-rails,ruby,model-view-controller,Ruby On Rails,Ruby,Model View Controller,我的rails link_正在调用不同的控制器操作。我有一个下拉菜单,我想把_链接到网站的另一部分。但是,它调用帮助构建页面的控制器方法,而不是实际的控制器方法。这导致了一个问题,因为我没有将正确的信息传递到方法调用中以正确执行该调用。我已经得到这个确切的东西,以工作在我的网站的其他部分,但不能在这里 当调用setup方法,然后该方法又调用另一个依赖于传入的ID的方法时,就会出现确切的问题。但是,当我在下拉菜单中有链接时,我不会传递ID,因为我不想调用setup 以下是相关代码: setup.h
setup
方法,然后该方法又调用另一个依赖于传入的ID的方法时,就会出现确切的问题。但是,当我在下拉菜单中有链接时,我不会传递ID,因为我不想调用setup
以下是相关代码:
setup.html.erb:
<div class="dropdown-menu aria-labelledby="dropdownMenuButton"" >
<% @days.each do |d|%>
<%= link_to "Go to #{d}", weeks_draw_day_path(:test => d), :class=>'dropdown-item' %>
<% end %>
</div>
routes.rb:我这里只列出了“周”控制器路线,因为我不相信其他路线是相关的
########### Week actions #############
get 'weeks/schedule'
get '/weeks/:id', to: 'weeks#setup', as: 'weeks_setup'
get 'weeks/draw_day'
resources :weeks, only: [:schedule, ] do
get :schedule, on: :collection
end
如您所见,我在draw\u day controller方法中使用了
byebug
。这永远不会被执行。如果我能提供更多有用的信息,请告诉我,谢谢你的帮助 尝试将as::draw\u day
添加到您的get'weeks/draw\u day'
路线之后(可能还需要指定至:
)。您可以通过从命令行执行类似于rake routes | grep draw_day
的操作来查看当前路线的名称,@dinjas无需您的建议,我通过weeks_draw_day get/weeks/draw_day(:format)weeks#draw_day)
获得此信息。根据你的建议,我得到了完全相同的东西,只是第一个“抽签日”中不再附加周。我更改了视图以匹配新路由,并且在调用的helper方法中出现了相同的错误。啊,对不起,我误解了您最初的解释。尝试将weeks/dray\u day
路线移动到/weeks/:id
路线上方。另外,如果您在单击链接时查看服务器日志,您应该能够看到发生了什么。@dinjas当我将路由放置在id上方时,它会起作用,谢谢!如果可能的话,我想找出原因。如果没有修复,控制台将显示周/draw\u天的GET请求。然后它会说processingbyweekscontroller#setup as HTML
,这就是我想要导航离开的页面。通过修复,控制台WeeksController#draw#u day上会显示正确的控制器操作,如HTML
当Rails试图找到一条路由,将您的请求映射到控制器#操作
时,它会使用匹配的第一条路由。当您首先使用/weeks/:id
路线,并尝试访问/weeks/draw\u day
时,它将'draw\u day'
匹配为/weeks/:id
路线中的:id>参数,并将您发送到weeks.\setup
设置为'draw\u day'
。
########### Week actions #############
get 'weeks/schedule'
get '/weeks/:id', to: 'weeks#setup', as: 'weeks_setup'
get 'weeks/draw_day'
resources :weeks, only: [:schedule, ] do
get :schedule, on: :collection
end