保存数据时Rails中的NoMethodError

时间:2015-05-10 00:17:40

标签: ruby-on-rails

Checks_controller

class Checkscontroller < ApplicationController

    def show
        @check= Tester.find(params[:id])
    end

    def new
    end

    def create
         @check = Tester.new(check_params)
         @check.save
         redirect_to @check
    end


    def check_params
        params.require(:check).permit(:title, :description)
    end

end

我正在尝试将'checks'控制器中的数据保存到'Tester'模型中,在ChecksController #create中获取"NoMethodError,在尝试将数据保存到my中时使用未定义方法tester_url' for#` DB。这一行似乎存在一些问题:“redirect_to @check”。

的routes.rb

Rails.application.routes.draw do
    get 'home/screen'
    resources :checks
    root 'home#screen'
end

1 个答案:

答案 0 :(得分:2)

编辑:我看到这个答案被接受了。对于其他任何看过这个的人:请不要这样做,没有一个真正的好理由。

好的,因为你想为你的Tester模型使用ChecksController,你必须将它添加到你的路线:注意我假设你没有Check模型,因为我看不到它在哪里,你用Tester作为支票?

resources :testers, as: 'checks' controller: 'checks'

此行将使/checks/1转到ID为1的Tester对象,并使用ChecksController show方法显示

旧答案,后人

您收到此错误是因为您在routes.rb文件中缺少Tester模型的路由。

您可以向其添加resources :testers,它会起作用。当然,您还需要至少与您的TestersController存在show动作

发生此错误是因为当您redirect_to @check时,Rails知道它是Tester对象并且期望一个名为tester的路由路由到TestersController#show。它试图使用rails为路由创建的辅助方法,称为tester_url