ActiveRecord :: RecordNotFound(无法找到<...>和'id'=):

时间:2019-06-28 15:32:05

标签: ruby-on-rails routes

注意:我是RoR的新手;我的语法是haml

view中,我在if语句中使用以下参数:

- if @progress_board.cover_image.present?

每次我的代码到达它时,都会出现以下错误:

ActiveRecord::RecordNotFound (Couldn't find ProgressBoard with 'id'=):
app/controllers/progress_boards_controller.rb:340:in `get_panel_data'

首先,在我的ProgressBoard cover_image中声明了model。我确定这是可行的,因为我设法显示了此cover_image

在我的controller中,@progress_board在我的方法中声明:

  def get_panel_data
        @progress_board = ProgressBoard.find(params[:progress_board_id])
   ...
  end

这是我与该问题有关的route.rb文件部分:

  resources :progress_boards do
    collection do
      get :get_progress_data
      get :get_panel_data
      get :render_tab
    end
    member do
      get :open_or_archive
      get :pbbackground
      get :remove_cover
      get :get_panel_data
    end
  end

我已经尝试用(params[:progress_board_id])(params[:progress_board])替换(params[:id]),但没有一个成功的秘诀

我想念什么?

1 个答案:

答案 0 :(得分:0)

由于此行,您收到一个错误:

@progress_board = ProgressBoard.find(params[:progress_board_id])

params[:progress_board_id]中的值与ProgressBoard表的id列中的值不对应。

您需要确保您要传递的参数将存在于表的id列中。

您可以使用@progress_board = ProgressBoard.find_by(id: params[:progress_board_id]),如果该值不在数据库表中,则不会引起异常。