在Rails 5中创建Model的新记录时出错

时间:2018-03-06 21:36:24

标签: ruby-on-rails database model-view-controller model associations

我的rails应用程序中有2个模型。用户和目标。 我把它们设置成这样:

用户模型

class User < ApplicationRecord
    has_one :goal, dependent: :destroy
end

目标模型

class Goal < ApplicationRecord
    belongs_to :user, optional: true
end

每当我尝试制作目标模型的新记录时,我都会收到此错误:

undefined method `new' for nil:NilClass

这是我的目标模型的控制器和视图

目标控制器

class GoalsController < ApplicationController
    def index
    end

    def new
        @goal = Goal.new
    end

    def create
        @goal = current_user.goal.new(goal_params)

        if @goal.save
            redirect_to @goal
        else
            render 'new'
        end
    end

    private

    def goal_params
        params.require(:goal).permit(:user_id, :goal_type)
    end
end

目标观看(新动作)

<%= form_for(@goal) do |f| %>
    <div class="field">
        <%= f.label :goal_type, "Would you like to..." %>
        <%= f.select :goal_type, ["Loose weight", "Gain weight", "Keep current weight"] %>
    </div>
    <div class="field submit">
        <%= f.submit "Submit", class: "button button-highlight button-block" %>
    </div>
<% end %>

在我的目标表中,我有一个名为goal_type和user_id的列。 我需要这样做,以便在创建新记录时,user_id字段会自动填充current_user id(当然使用设计)。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我刚从以下位置更改了控制器:

@goal = current_user.goal.new(goal_params)

为:

@goal = current_user.build_goal(goal_params)