我收到此错误:ScoersController#create中的NameError未初始化的常量Score :: UserTo有谁知道是什么原因导致此错误?我什至不知道这可能是指未初始化的conatant。
这里是我的ScoresController
class ScoresController < ApplicationController
before_action :set_score, only: [:show, :edit, :update, :destroy]
# GET /scores
# GET /scores.json
def index
@scores = Score.all
end
# GET /scores/1
# GET /scores/1.json
def show
end
# GET /scores/new
def new
@score = Score.new(project_id: params[:project_id])
@usersFor = User.all
@left = User.all
end
# GET /scores/1/edit
def edit
end
# POST /scores
# POST /scores.json
def create
@usersFor = User.all
@left = User.all
@score = Score.new(score_params)
respond_to do |format|
if @score.save
format.html { redirect_to @score, notice: 'Score was successfully created.' }
format.json { render :show, status: :created, location: @score }
else
format.html { render :new }
format.json { render json: @score.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /scores/1
# PATCH/PUT /scores/1.json
def update
respond_to do |format|
if @score.update(score_params)
format.html { redirect_to @score, notice: 'Score was successfully updated.' }
format.json { render :show, status: :ok, location: @score }
else
format.html { render :edit }
format.json { render json: @score.errors, status: :unprocessable_entity }
end
end
end
# DELETE /scores/1
# DELETE /scores/1.json
def destroy
@score.destroy
respond_to do |format|
format.html { redirect_to scores_url, notice: 'Score was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_score
@score = Score.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def score_params
params.require(:score).permit(:project_id, :user_to_id, :user_for_id, :score)
end
end
这是我的scores/new.html.erb
文件:
<% @project = Project.find_by id: params[:project_id] %>
<h1>New Score</h1>
<%= form_with(model: @score, local: true) do |form| %>
<% if @score.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@score.errors.count, "error") %> prohibited this score from being saved:</h2>
<ul>
<% @score.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<% @projects = Project.where(id: params[:project_id]) %>
<% @usersFor = User.where(id: current_user.id) %>
<% @given = Score.where(project_id: @project.id, user_for_id: current_user.id) %>
<% @evaluated = [] %>
<% @given.each do |gave| %>
<% @teammate = User.find_by id: gave.user_to_id %>
<% @evaluated.push(@teammate) %>
<% end %>
<% @team %>
<% @teams = Team.where(team_type_id: @project.team_type_id) %>
<% @userTeams = TeamMembership.where(user_id: current_user.id) %>
<% @userTeams.each do |t| %>
<% @tempTeam = Team.find_by id: t.team_id%>
<% if @tempTeam.team_type_id == @project.team_type_id %>
<% @team = @tempTeam %>
<% end %>
<% end %>
<% @group = TeamMembership.where(team_id: @team.id) %>
<% @left = [] %>
<% @group.each do |g| %>
<% @m = User.find_by id: g.user_id %>
<% @left.push(@m) %>
<% end %>
<% @left = @left - @evaluated %>
<div class="field">
<%= form.label :project_id %>
<%= collection_select(:score, :project_id, @projects,:id,:project_name) %>
</div>
<div class="field">
<%= form.select :user_for_id, options_for_select(@usersFor.collect{ |user| [user.first_name + " "+ user.last_name, user.id]}) %>
</div>
<div class="field">
<%= form.select :user_to_id, options_for_select(@left.collect{ |user| [user.first_name + " "+ user.last_name, user.id]}) %>
</div>
<div class="field">
<%= form.label :score %>
<%= form.number_field :score, id: :score_score %>
</div>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
如果有帮助,这是我的score
模型:
class Score < ApplicationRecord
validates :score, numericality: { less_than_or_equal_to: 10,
only_integer: true}, presence:
true
belongs_to :project
belongs_to :user_to
belongs_to :user_for
end
谢谢!编辑:新的score
模型
class Score < ApplicationRecord
validates :score, numericality: { less_than_or_equal_to: 10,
only_integer: true}, presence:
true
belongs_to :project
has_one :user_to, class_name: User
has_one :user_for, class_name: User
end
编辑:完整的错误消息:
ActiveRecord :: StatementInvalid在ScoresController#create中SQLite3 :: SQLException:没有这样的表:main.user_fors:插入“得分”(“ project_id”,“ user_to_id”,“ user_for_id”,“ score”,“ created_at”,“ updated_at”))值(?,?,? ,?,?,?)在if @score.save
]中的ScoresController
行上引发错误
我收到此错误:ScoersController#create中的NameError未初始化的常量Score :: UserTo有人知道是什么原因导致此错误?我什至不知道这是什么未初始化的conatant ...
您的关联显示为user_to,除非另行指定,否则Rails会尝试找到一个名为UserTo
的类。您可以将class_name: User
传递给关联,以告诉它要使用哪个类。