ruby-on-rails Rails:如何在另一个模型控制器中引用一个模型的路径?

8ehkhllq  于 2022-11-26  发布在  Ruby
关注(0)|答案(3)|浏览(123)

这是一个简单的问题,但我是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
cs7cruho

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

v6ylcynt

v6ylcynt2#

查看文档后,我明确给出了路径

redirect_to "/scores/new"

这就解决了问题;我不确定这是否是正确/好的方法,但它起作用了。如果有更好的解决方案,我很高兴接受教育。

3yhwsihp

3yhwsihp3#

问题在于如何调用redirect_to方法。

redirect_to url: new_scores_path, notice: 'Prediction WAS successfully created.'

试试看:

redirect_to new_score_path, notice: 'Prediction WAS successfully created.'

正确的路径帮助器为new_score_path(单数)。

相关问题