gpt4 book ai didi

ruby-on-rails - 找不到没有 ID rails 4 记录的 HourLog

转载 作者:行者123 更新时间:2023-12-03 15:10:41 24 4
gpt4 key购买 nike

我试图只显示登录用户从数据库中创建的记录,但不知道该怎么做。当我尝试访问数据库并确定要从中提取的特定数据时出现错误。

时间 Controller

   class HoursController < ApplicationController
before_action :require_user
def new
@hour = HourLog.where(:user_id => current_user.id)
@entry = HourLog.all
end
def create
@hour = HourLog.new(hour_params)
@hour.User_id = current_user.id if current_user
@hour.status = 'Pending'
if @hour.save
redirect_to '/dashboard'
end
end
private
def hour_params
params.require(:hour_log).permit(:assignment, :hours, :supervisor, :date,)
end
end

营业时间 View (new.html.erb)(将数据输入数据库的字段)

<% @entry.each do |hour| %>
<tr>
<td><%= hour.assignment %></td>
<td><%= hour.hours %></td>
<td><%= hour.supervisor %></td>
<td><%= hour.date %></td>
<td><%= hour.status %></td>
</tr>
<% end.empty? %>
<%= form_for(@hour, url: hours_path) do |f|%>
<tr>
<td id="dashfield"><%=f.text_field :assignment, :placeholder=> "Assignment"%></td>
<td id="dashfiled"><%=f.text_field :hours, :placeholder => "Hours"%></td>
<td id="dashfield"><%=f.text_field :supervisor, :placeholder=> "Supervisor/Location"%></td>
<td id="dashfield"><%=f.date_field :date, :placeholder=> "Date"%></td>
<%=f.hidden_field :status, :value => "Pending" %>
<%=f.hidden_field :User_id, :value => current_user.id %>
<td id="dashbtn"><%=f.submit 'Create' %></td>
</tr>
<%end%>

错误:

Started GET "/dashboard" for 127.0.0.1 at 2015-08-10 17:29:08 -0500
Processing by HoursController#new as HTML
User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 4]]
Completed 404 Not Found in 18ms

ActiveRecord::RecordNotFound (Couldn't find HourLog without an ID):
app/controllers/hours_controller.rb:4:in `new'

谢谢!

最佳答案

我认为这个功能:

def new
@hour = HourLog.where(:user_id => current_user.id)
@entry = HourLog.all
end

应该改为:

def new
@hour = current_user.hour_logs.new
@entry = current_user.hour_logs.all
end

假设模型user配置了has_many :hour_logs

在您的模型中,user 有许多 hour_logshour_logs 必须有一个列 user_id大写

要将列名从 User_id 更改为 user_id,您需要创建一个新的迁移。在命令提示符下导航到 rails app 文件夹并执行:

rails g migration fixcolumn1

这将在 your-app-path/db/migrate 中生成一个名为 some-date_fixcolumn1.rb 的文件编辑此文件,以便出现以下内容:

def change
rename_column :hour_logs, :User_id, :user_id
end

之后回到提示符处执行

rake db:migrate

它应该从那里开始工作

关于ruby-on-rails - 找不到没有 ID rails 4 记录的 HourLog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31930295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com