方法set_instrument适用于方法show,edit,update和destroy,但不适用于方法图表。 不知道如何解决这个问题。这是我的控制器:
class InstrumentsController < ApplicationController
before_action :set_instrument, only: [:show, :edit, :update, :destroy, :chart]
def chart
@measurements = @instrument.measurements.order("scheduled_on asc")
end
def show
@measurements = @instrument.measurements.order("scheduled_on asc")
end
def edit
end
private
def set_instrument
@instrument = Instrument.find(params[:id])
end
def instrument_params
params.require(:instrument).permit(:inst_id, :chainage, :northing, :easting,
:latitude, :longitude, :above_tbm, :group_id, :section, :number_of_sensors,
:review_level, :alert_level)
end
end
我收到错误:在方法@instrument = Instrument.find(params[:id])
的语句set_instrument
中找不到没有ID的工具。
答案 0 :(得分:1)
在你的路线中,你有类似的东西:
resources :instruments do
get 'chart', on: :collection
end
如果您希望在此路线中拥有id
参数,则必须将其更改为成员:
resources :instruments do
get 'chart', on: :member
end
请勿忘记您必须将ID传递给chart
链接,如下所示:
link_to 'chart', [:chart, instrument]
有关Rails中路由的更多信息,您可以查看指南: