这是一个简单的问题,但我是Rails新手。简单地说,我想在我的预测控制器中使用另一个模型(Score)的路径。一旦做出了新的预测,我想重定向到new_score_path,但我一直收到错误-
undefined local variable or method `new_scores_path' for #<PredictionsController:
我想我需要以某种方式引用PredictionsController中的Score模型,但我不确定如何做到这一点。
def create
@prediction = Prediction.new(prediction_params)
respond_to do |format|
if @prediction.save
user = User.find(@current_user.id)
user.lastcase = user.lastcase + 1
user.save
@user = user
@patient = Patient.find(@current_user.lastcase)
format.html { redirect_to url: new_scores_path, notice: 'Prediction WAS successfully created.' }
format.json { render :new, status: :created, location: @prediction }
else
format.html { render :new, status: :unprocessable_entity }
format.json { render json: @prediction.errors, status: :unprocessable_entity }
end
end
end
非常感谢您的阅读。
编辑
我试过了
new_score_path
它只是将我路由到预测(即index.html.erb文件中)。
http://localhost:3000/predictions?notice=Prediction+WAS+successfully+created.&url=%2Fscores%2Fnew
3条答案
按热度按时间cs7cruho1#
这是一个简单的问题,但我是Rails的新手。简单地说,我想在我的预测控制器中使用另一个模型(Score)的路径。
你想错了。控制器不属于模型。路由也不属于模型。模型只是应用程序的内部实现细节(或者至少它们应该是最好的)。
从
routes.rb
生成的所有路由助手都可用于所有控制器和视图,无论它们的名称是什么。我想我需要以某种方式引用预测控制器中的得分模型,但我不确定如何做到这一点。
如果你遵循惯例,并且已经用
resources :scores
声明了路由,你只需要调用正确的helper方法new_score_path
。新的动作路由helper总是new_singular_path
。路由和模型之间唯一的实际链接是基于模型名称和Rails约定的Rails provides helpers that can guess what route helper to use。
v6ylcynt2#
查看文档后,我明确给出了路径
这就解决了问题;我不确定这是否是正确/好的方法,但它起作用了。如果有更好的解决方案,我很高兴接受教育。
3yhwsihp3#
问题在于如何调用
redirect_to
方法。试试看:
注正确的路径帮助器为
new_score_path
(单数)。