注意:我是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])
,但没有一个成功的秘诀
我想念什么?
答案 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])
,如果该值不在数据库表中,则不会引起异常。