Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails链接到调用不正确的控制器操作_Ruby On Rails_Ruby_Model View Controller - Fatal编程技术网

Ruby on rails Rails链接到调用不正确的控制器操作

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

我的rails link_正在调用不同的控制器操作。我有一个下拉菜单,我想把_链接到网站的另一部分。但是,它调用帮助构建页面的控制器方法,而不是实际的控制器方法。这导致了一个问题,因为我没有将正确的信息传递到方法调用中以正确执行该调用。我已经得到这个确切的东西,以工作在我的网站的其他部分,但不能在这里

当调用
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