首页 > 解决方案 > Rails link_to 调用不正确的控制器动作

问题描述

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

确切的问题发生在setup调用该方法时,然后该方法又调用另一个依赖于传入的 ID 的方法。但是,当我在下拉菜单中有 link_to 时,我没有传入 ID,因为我没有不想调用设置。

以下是相关代码:

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>

week_controller.rb:我删除了大部分setup代码,因为它没有用。我确实保留了带有 id 的参数查找以及对崩溃的辅助方法的后续调用,因为我从未在上面的视图中的 link_to 上传递该 id。

class WeeksController < ApplicationController
  before_action :set_week, only: [:show, :edit, :update, :destroy]


  def schedule
    week, start, finish = get_set_of_weeks()
    for i in 0...week.length
      Week.check_insert_week(week[i], start[i], finish[i])
    end
  end


  def setup
    # Gets the id of the current week
    @w = Week.find_by_id(params[:id])
    # Gets a DB friendly start of week 

  end

  def draw_day
    byebug
    logger.info "Sup"
  end



  def week_lookup_controller(id)
    Week.week_lookup_model_lit(id)
  end


  helper_method :week_lookup_controller

  private

    # Never trust parameters from the scary internet, only allow the white list through.
    def week_params
      params.fetch(:week, {})
    end
end

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

如您所见,我byebug在 draw_day 控制器方法中有。这永远不会被执行。如果我能提供更多有用的信息,请告诉我,谢谢您的帮助!

标签: ruby-on-railsrubymodel-view-controller

解决方案


推荐阅读