Rails: 尝试渲染具有相同属性的用户图像
Rails: Trying to render image of users with same attribute
我正在 Rails 申请年鉴。我目前正在尝试显示与 wdier 的个人资料页面(又名 show
视图)具有相同 squad_id
的所有 Wdiers(这是教师和学生的组合)的图像列表。这将呈现在 show
页面上 Wdier 的 squad_name
下。
这是 show
视图:
<div class="squadGallery">
<ul class="grid">
<div class="index">
<h2> <%= @wdier.squad_name %></h2>
<% @wdiers.each do |wdier| %>
<%= link_to image_tag(wdier.img_url), wdier_path(wdier) %>
<% end %>
</ul>
</div>
</div>
我不断收到此错误消息:
undefined method `each' for nil:NilClass
这是我的 wdiers 控制器:
class WdiersController < ApplicationController
def index
@wdiers = Wdier.all
end
def new
@wdier = Wdier.new
end
def create
@wdier = Wdier.create!(wdier_params)
redirect_to wdiers_path(@wdier)
end
def show
@wdier = Wdier.find(params[:id])
end
def edit
@wdier = Wdier.find(params[:id])
end
def update
@wdier = Wdier.find(params[:id])
@wdier.update(wdier_params)
redirect_to wdier_path(@wdier)
end
def destroy
@wdier = Wdier.find(params[:id])
@wdier.destroy
redirect_to wdiers_path(@wdier)
end
def wdier_params
params.require(:wdier).permit(:name, :img_url, :squad_name, :squad_id, :quote, :teaching, :memory, :favlang, :wisewords, :tag_list,:github_url, :portfolio_url, :project1_url, :project2_url, :project3_url, :quote, :q1, :q2, :q3, :fb, :linkedin, :email, :role, :student_id, :instructor_id)
end
end
这是我的 wdiers 架构:
create_table "wdiers", force: :cascade do |t|
t.string "name"
t.string "img_url"
t.string "github_url"
t.string "portfolio_url"
t.string "project1_url"
t.string "project2_url"
t.string "project3_url"
t.string "quote"
t.string "squad_name"
t.integer "teaching"
t.integer "memory"
t.integer "favlang"
t.integer "wisewords"
t.integer "tag_list"
t.integer "q1"
t.integer "q2"
t.integer "q3"
t.integer "fb"
t.integer "linkedin"
t.integer "email"
t.integer "role"
t.integer "password"
t.integer "squad_id"
t.integer "codey_id"
t.integer "student_id"
t.integer "instructor_id"
end
add_index "wdiers", ["codey_id"], name: "index_wdiers_on_codey_id", using: :btree
add_index "wdiers", ["instructor_id"], name: "index_wdiers_on_instructor_id", using: :btree
add_index "wdiers", ["squad_id"], name: "index_wdiers_on_squad_id", using: :btree
add_index "wdiers", ["student_id"], name: "index_wdiers_on_student_id", using: :btree
add_foreign_key "comments", "wdiers"
end
如何解决当前错误并显示同一小队的Wdiers列表?
在您的所有控制器操作中,您似乎都定义了@wdier 或@wdiers。但是在视图文件中你调用了两者。
在控制器的 show
操作中,您需要搜索小队成员:
def show
@wdier = Wdier.find(params[:id])
@wdiers = Wdier.where(squad_id: @wdier.squad_id).not(id: @wdier.id).order(:name)
end
这将检索到 @wdiers
所有具有相同 squad_id
的 Wdiers。 show
页面上的 Wdier 被排除在小队列表之外,因为该 Wdier 已经显示在 show
页面上。 Wdiers 列表按 name
排序,就像年鉴一样。
我正在 Rails 申请年鉴。我目前正在尝试显示与 wdier 的个人资料页面(又名 show
视图)具有相同 squad_id
的所有 Wdiers(这是教师和学生的组合)的图像列表。这将呈现在 show
页面上 Wdier 的 squad_name
下。
这是 show
视图:
<div class="squadGallery">
<ul class="grid">
<div class="index">
<h2> <%= @wdier.squad_name %></h2>
<% @wdiers.each do |wdier| %>
<%= link_to image_tag(wdier.img_url), wdier_path(wdier) %>
<% end %>
</ul>
</div>
</div>
我不断收到此错误消息:
undefined method `each' for nil:NilClass
这是我的 wdiers 控制器:
class WdiersController < ApplicationController
def index
@wdiers = Wdier.all
end
def new
@wdier = Wdier.new
end
def create
@wdier = Wdier.create!(wdier_params)
redirect_to wdiers_path(@wdier)
end
def show
@wdier = Wdier.find(params[:id])
end
def edit
@wdier = Wdier.find(params[:id])
end
def update
@wdier = Wdier.find(params[:id])
@wdier.update(wdier_params)
redirect_to wdier_path(@wdier)
end
def destroy
@wdier = Wdier.find(params[:id])
@wdier.destroy
redirect_to wdiers_path(@wdier)
end
def wdier_params
params.require(:wdier).permit(:name, :img_url, :squad_name, :squad_id, :quote, :teaching, :memory, :favlang, :wisewords, :tag_list,:github_url, :portfolio_url, :project1_url, :project2_url, :project3_url, :quote, :q1, :q2, :q3, :fb, :linkedin, :email, :role, :student_id, :instructor_id)
end
end
这是我的 wdiers 架构:
create_table "wdiers", force: :cascade do |t|
t.string "name"
t.string "img_url"
t.string "github_url"
t.string "portfolio_url"
t.string "project1_url"
t.string "project2_url"
t.string "project3_url"
t.string "quote"
t.string "squad_name"
t.integer "teaching"
t.integer "memory"
t.integer "favlang"
t.integer "wisewords"
t.integer "tag_list"
t.integer "q1"
t.integer "q2"
t.integer "q3"
t.integer "fb"
t.integer "linkedin"
t.integer "email"
t.integer "role"
t.integer "password"
t.integer "squad_id"
t.integer "codey_id"
t.integer "student_id"
t.integer "instructor_id"
end
add_index "wdiers", ["codey_id"], name: "index_wdiers_on_codey_id", using: :btree
add_index "wdiers", ["instructor_id"], name: "index_wdiers_on_instructor_id", using: :btree
add_index "wdiers", ["squad_id"], name: "index_wdiers_on_squad_id", using: :btree
add_index "wdiers", ["student_id"], name: "index_wdiers_on_student_id", using: :btree
add_foreign_key "comments", "wdiers"
end
如何解决当前错误并显示同一小队的Wdiers列表?
在您的所有控制器操作中,您似乎都定义了@wdier 或@wdiers。但是在视图文件中你调用了两者。
在控制器的 show
操作中,您需要搜索小队成员:
def show
@wdier = Wdier.find(params[:id])
@wdiers = Wdier.where(squad_id: @wdier.squad_id).not(id: @wdier.id).order(:name)
end
这将检索到 @wdiers
所有具有相同 squad_id
的 Wdiers。 show
页面上的 Wdier 被排除在小队列表之外,因为该 Wdier 已经显示在 show
页面上。 Wdiers 列表按 name
排序,就像年鉴一样。