显示平板电脑中包含的信息 "belongs to" 并将其放入视图循环中
Displaying info contained in a tablet it "belongs to" and putting it in a view loop
我搜索了这个答案,但在堆栈溢出中找不到它。
这是我的问题。
咯咯声属于用户。
一个用户有很多咯咯声
我希望能够在循环中显示来自另一个 table 的数据,该数据与其有活动记录关系。
当我在循环中显示 gurgles 自己的 index.html.erb 并仅检索它自己的 table 信息时,它工作正常。
但是当我尝试检索 gurgle 所属用户的信息时,它会抛出错误。
这里有些东西我只是没有得到,我希望有人能提供帮助。
我收到很多不同的错误,具体取决于我如何更改它,但就目前而言,这是我现在收到的错误...
目前不喜欢@user.email...
Gurgles 中的 NoMethodError # 索引
# User::ActiveRecord_Relation 的未定义方法“电子邮件”
提取的源代码(大约第 17 行):
<tr>
<td><p><%= image_tag("zombie_profile.png", width: '100px') %><%= gurgle.status %></p></td>
<td><p><%= @user.email %></p></td>
</tr>
</tbody>
</table>
这是我的代码:
我的咯咯声模型文件...
class Gurgle < ApplicationRecord
belongs_to :user, foreign_key: "user_id"
end
我的用户模型(此处使用设计引擎)...
class User < ApplicationRecord
has_many :gurgles
has_one :profile
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
我的 gurgle 控制器代码...
class GurglesController < ApplicationController
before_action :set_gurgle, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!
layout 'gurgle'
# GET /gurgles
# GET /gurgles.json
def index
@gurgle = Gurgle.all
@user = User.all
end
# GET /gurgles/1
# GET /gurgles/1.json
def show
end
# GET /gurgles/new
def new
@gurgle = Gurgle.new
end
# GET /gurgles/1/edit
def edit
end
# POST /gurgles
# POST /gurgles.json
def create
@user = User.find(current_user)
@gurgle = @user.gurgles.new(gurgle_params)
respond_to do |format|
if @gurgle.save
format.html { redirect_to @gurgle, notice: 'Gurgle was successfully created.' }
format.json { render :show, status: :created, location: @gurgle }
else
format.html { render :new }
format.json { render json: @gurgle.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /gurgles/1
# PATCH/PUT /gurgles/1.json
def update
respond_to do |format|
if @gurgle.update(gurgle_params)
format.html { redirect_to @gurgle, notice: 'Gurgle was successfully updated.' }
format.json { render :show, status: :ok, location: @gurgle }
else
format.html { render :edit }
format.json { render json: @gurgle.errors, status: :unprocessable_entity }
end
end
end
# DELETE /gurgles/1
# DELETE /gurgles/1.json
def destroy
@gurgle.destroy
respond_to do |format|
format.html { redirect_to gurgles_url, notice: 'Gurgle was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_gurgle
@gurgle = Gurgle.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def gurgle_params
params.require(:gurgle).permit(:status, :user_id)
end
end
我的咯咯index.html.erb代码....
<p id="notice"><%= notice %></p>
<br />
<hr>
<table>
<thead>
<tr>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
<% @gurgle.each do |gurgle| %>
<tr>
<td><p><%= image_tag("zombie_profile.png", width: '100px') %><%= gurgle.status %></p></td>
<td><p><%= @user.email %></p></td>
</tr>
</tbody>
</table>
<br />
<p><%= link_to 'Edit', edit_gurgle_path(gurgle), class: "gurgle-links" %> | <%= link_to 'Delete', gurgle, method: :delete, data: { confirm: 'Are you sure?' }, class: "gurgle-links" %></p>
<br />
<hr>
<% end %>
<br />
<br />
<%= button_to 'New Gurgle', new_gurgle_path, class: "btn btn-primary", method: :get %>
最后是关于如何在数据库中设置我的 table 的模式....
ActiveRecord::Schema.define(version: 20170101132806) do
create_table "gurgles", force: :cascade do |t|
t.text "status"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["user_id"], name: "index_gurgles_on_user_id"
end
create_table "profiles", force: :cascade do |t|
t.string "username"
t.text "about"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["user_id"], name: "index_profiles_on_user_id"
end
create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["email"], name: "index_users_on_email", unique: true
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
end
end
我在这里做错了什么或遗漏了什么....
应该是:
<% @gurgle.each do |gurgle| %>
<tr>
<td><p><%= image_tag("zombie_profile.png", width: '100px') %><%= gurgle.status %></p></td>
<td><p><%= gurgle.user.email rescue nil %></p></td>
</tr>
<% end %>
def index
@gurgle = Gurgle.all
end
在index.html.erb中尝试更新以下代码
<td><p><%= gurgle.user.email %></p></td>
使用 gurgle 对象,您可以访问用户电子邮件,因为您有关联,但有时会导致错误,因为您的 gurgle
数据不包含 user_id,因此它会抛出错误
从索引操作中删除@user
我搜索了这个答案,但在堆栈溢出中找不到它。
这是我的问题。
咯咯声属于用户。 一个用户有很多咯咯声
我希望能够在循环中显示来自另一个 table 的数据,该数据与其有活动记录关系。
当我在循环中显示 gurgles 自己的 index.html.erb 并仅检索它自己的 table 信息时,它工作正常。
但是当我尝试检索 gurgle 所属用户的信息时,它会抛出错误。
这里有些东西我只是没有得到,我希望有人能提供帮助。 我收到很多不同的错误,具体取决于我如何更改它,但就目前而言,这是我现在收到的错误...
目前不喜欢@user.email...
Gurgles 中的 NoMethodError # 索引 # User::ActiveRecord_Relation 的未定义方法“电子邮件” 提取的源代码(大约第 17 行):
<tr>
<td><p><%= image_tag("zombie_profile.png", width: '100px') %><%= gurgle.status %></p></td>
<td><p><%= @user.email %></p></td>
</tr>
</tbody>
</table>
这是我的代码:
我的咯咯声模型文件...
class Gurgle < ApplicationRecord
belongs_to :user, foreign_key: "user_id"
end
我的用户模型(此处使用设计引擎)...
class User < ApplicationRecord
has_many :gurgles
has_one :profile
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
我的 gurgle 控制器代码...
class GurglesController < ApplicationController
before_action :set_gurgle, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!
layout 'gurgle'
# GET /gurgles
# GET /gurgles.json
def index
@gurgle = Gurgle.all
@user = User.all
end
# GET /gurgles/1
# GET /gurgles/1.json
def show
end
# GET /gurgles/new
def new
@gurgle = Gurgle.new
end
# GET /gurgles/1/edit
def edit
end
# POST /gurgles
# POST /gurgles.json
def create
@user = User.find(current_user)
@gurgle = @user.gurgles.new(gurgle_params)
respond_to do |format|
if @gurgle.save
format.html { redirect_to @gurgle, notice: 'Gurgle was successfully created.' }
format.json { render :show, status: :created, location: @gurgle }
else
format.html { render :new }
format.json { render json: @gurgle.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /gurgles/1
# PATCH/PUT /gurgles/1.json
def update
respond_to do |format|
if @gurgle.update(gurgle_params)
format.html { redirect_to @gurgle, notice: 'Gurgle was successfully updated.' }
format.json { render :show, status: :ok, location: @gurgle }
else
format.html { render :edit }
format.json { render json: @gurgle.errors, status: :unprocessable_entity }
end
end
end
# DELETE /gurgles/1
# DELETE /gurgles/1.json
def destroy
@gurgle.destroy
respond_to do |format|
format.html { redirect_to gurgles_url, notice: 'Gurgle was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_gurgle
@gurgle = Gurgle.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def gurgle_params
params.require(:gurgle).permit(:status, :user_id)
end
end
我的咯咯index.html.erb代码....
<p id="notice"><%= notice %></p>
<br />
<hr>
<table>
<thead>
<tr>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
<% @gurgle.each do |gurgle| %>
<tr>
<td><p><%= image_tag("zombie_profile.png", width: '100px') %><%= gurgle.status %></p></td>
<td><p><%= @user.email %></p></td>
</tr>
</tbody>
</table>
<br />
<p><%= link_to 'Edit', edit_gurgle_path(gurgle), class: "gurgle-links" %> | <%= link_to 'Delete', gurgle, method: :delete, data: { confirm: 'Are you sure?' }, class: "gurgle-links" %></p>
<br />
<hr>
<% end %>
<br />
<br />
<%= button_to 'New Gurgle', new_gurgle_path, class: "btn btn-primary", method: :get %>
最后是关于如何在数据库中设置我的 table 的模式....
ActiveRecord::Schema.define(version: 20170101132806) do
create_table "gurgles", force: :cascade do |t|
t.text "status"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["user_id"], name: "index_gurgles_on_user_id"
end
create_table "profiles", force: :cascade do |t|
t.string "username"
t.text "about"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["user_id"], name: "index_profiles_on_user_id"
end
create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["email"], name: "index_users_on_email", unique: true
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
end
end
我在这里做错了什么或遗漏了什么....
应该是:
<% @gurgle.each do |gurgle| %>
<tr>
<td><p><%= image_tag("zombie_profile.png", width: '100px') %><%= gurgle.status %></p></td>
<td><p><%= gurgle.user.email rescue nil %></p></td>
</tr>
<% end %>
def index
@gurgle = Gurgle.all
end
在index.html.erb中尝试更新以下代码
<td><p><%= gurgle.user.email %></p></td>
使用 gurgle 对象,您可以访问用户电子邮件,因为您有关联,但有时会导致错误,因为您的 gurgle
数据不包含 user_id,因此它会抛出错误
从索引操作中删除@user