- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试显示按名字或姓氏搜索的用户的数据。我能够显示为用户返回的所有数据(例如,如果按名字搜索用户,我可以提取与搜索到的用户关联的所有其他字段/数据,例如城市、州/省等)。
似乎给我一个错误的唯一字段是与每个用户关联的头像(个人资料照片)字段。 <%= image_tag @user.avatar.url(:thumb) %>
注意:我可以从其他用户页面(例如 show.html.erb)显示此字段。
我在点击搜索结果页面时遇到的错误是:
NoMethodError in Users#index - undefined method `avatar' for # User::ActiveRecord_Relation:0x007fc328248ef0
_user.html.erb
<div class="card">
<div class="columns">
<div class="col">
<%= image_tag @user.avatar.url(:thumb) %>
</div>
<div class="col">
<div class="name">
<%= user.firstname %> <%= user.lastname%>
</div>
<br>
<b><%= user.city%>, <%= user.stateprov%></b>
</div>
</div>
</div>
index.html.erb
<% if @user.present? %>
<%= render @user %>
<% else %>
<p>There are no posts containing the term(s) <%= params[:search] %>.</p>
<% end %>
用户.rb
class User < ActiveRecord::Base
def self.search(search)
where("firstname LIKE ? OR lastname LIKE ?", "%#{search}%", "%#{search}%")
end
has_secure_password
validates_length_of :password, :in => 6..20, :on => :create
validates :password_confirmation, presence: true, if: -> { new_record? || changes["password"] }
has_attached_file :avatar,
:path => ":rails_root/public/system/:attachment/:id/:basename_:style.:extension",
:url => "/system/:attachment/:id/:basename_:style.:extension",
:styles => {
:thumb => ['175x175#', :jpg, :quality => 100],
:preview => ['480x480#', :jpg, :quality => 70],
:large => ['600>', :jpg, :quality => 70],
:retina => ['1200>', :jpg, :quality => 30]
},
:convert_options => {
:thumb => '-set colorspace sRGB -strip',
:preview => '-set colorspace sRGB -strip',
:large => '-set colorspace sRGB -strip',
:retina => '-set colorspace sRGB -strip -sharpen 0x0.5'
}
validates_attachment :avatar,
:presence => true,
:size => { :in => 0..10.megabytes },
:content_type => { :content_type => /^image\/(jpeg|png|gif|tiff)$/ }
end
users_controller.rb
class UsersController < ApplicationController
def create
@user = User.new(user_params)
if @user.save
flash[:success] = "You signed up successfully"
flash[:color] = "valid"
redirect_to @user
else
flash[:notice] = "Form is invalid"
flash[:color] = "invalid"
render "new"
end
end
def index
@user = User.all
if params[:search]
@user = User.search(params[:search]).order("created_at DESC")
else
@user = User.all.order('created_at DESC')
end
end
def show
@user = User.find(params[:id])
end
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update_attributes(user_params)
redirect_to @user
else
render 'edit'
end
end
private
def user_params
params.require(:user).permit(:firstname, :lastname, :email, :aptno, :streetaddress, :city, :country, :stateprov, :poszip, :receive_newsletters, :terms_accepted, :password, :password_confirmation, :avatar)
end
end
最佳答案
您正在尝试将一组用户用作单个用户。
def index
@users = User.all
if params[:search]
@users = User.search(params[:search]).order("created_at DESC")
else
@users = User.all.order('created_at DESC')
end
end
<% if @users.any? %>
<%= render @users %>
<% else %>
<p>There are no posts containing the term(s) <%= params[:search] %>.</p>
<% end %>
到目前为止,所做的更改只是为了避免开发人员混淆。然而,真正的症结在于您使用 @user
而不是 user
的部分。
<%= image_tag @user.avatar.url(:thumb) %>
此处的区别在于 user
是 Rails 在渲染部分时创建的局部变量。而 @user
是您的未命名集合!
所以只用局部变量:
<%= image_tag user.avatar.url(:thumb) %>
并在命名变量时注意复数形式。
关于ruby-on-rails - #<User::ActiveRecord_Relation:0x007fc328248ef0> 的未定义方法 `avatar',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35469817/
我有以下查询: User.joins(:posts).group('users.id').having('count(user_id) > 1') 返回的类是User::ActiveRecord_Re
拥有: class Foo < ApplicationRecord def self.to_csv # irrelevant end end Rails 允许我做: Foo.all.t
我有一个users 表、一个notifications 表和一个notification_reads 连接表。我正在尝试为 ActiveRecord 查询编写一个范围,该查询将返回所有通知 (Noti
基本上,我正在尝试设置 Trainer 将注册的日历,如下所示: @calendar = Calendar.where("current = 1") @trainer.calendar = @cale
希望这不是一个重复的问题,因为我花了数周时间在 StackOverflow 上搜索答案,但没有找到解决我问题的方法。 我有一个 Ruby on Rails API(Ruby 1.9.3,Rails 4
我正在从 Rails 3 更新到 Rails 4.2,当我运行应用程序的测试套件时,出现以下错误: Failure/Error: get 'edit', id: @shops[3].id NoMe
如何从 Rails 中的 ActiveRecord_Relation 中删除最后一个元素? 例如如果我设置: @drivers = Driver.all 我可以通过执行以下操作将另一个名为 @new_
对不起,愚蠢的问题 在这里养的时候@property我正在排队,但是当我提高时 @property.id它正在显示 undefined method id给我结论 在 owner.rb has_man
Rails 新手,正在尝试使用 Google Maps API。我希望循环遍历并显示数据库中每个地理位置的标记。当我在窗口中打开控制台并查找变量 [places](该变量应具有我所有 @locatio
我正在尝试显示按名字或姓氏搜索的用户的数据。我能够显示为用户返回的所有数据(例如,如果按名字搜索用户,我可以提取与搜索到的用户关联的所有其他字段/数据,例如城市、州/省等)。 似乎给我一个错误的唯一字
我有三个模型。 User、Message 和Filter,关系如下图。如何选择 User.find(*).filters.messages? 用户: has_many :filters has_and
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 6 年前。
我有一个国家模型和一个游记模型。一个国家有很多游记,一篇游记属于一个国家。 在 Rails 控制台中: TravelNote.published.country(248) [#] TravelNot
我正在使用 select in with通过find_by_sql查询: scope :error_percentage, -> (user_obj) { find_by_sql("WITH pr
我有两个事件记录数组。我合并了这两个数组,现在我想根据“updated_at”字段对它们进行排序。 @notification_challenges=Challenge.where("to_id=?
我正在尝试产品数量 - 1 但我收到此错误 line_item.rb belongs_to :order belongs_to :product 支付.rb has_many :orders #Lin
我今天有一个不典型的问题。我有阻塞的条件: User.where do |user| user if Avatar.where(id: user.avatar_id).empty? end.fir
我通过构建应用程序来学习 Rails。在我将此代码添加到我的 users_controller.rb 之前,我的应用程序运行良好 def show @user = User.find(para
我遇到了未定义方法 `to_key' 的问题 这是我的 books_controller.rb class BooksController ... ... 现在当我要访问索引页
我在 form_for 渲染方面遇到了问题。我想要一个 _form.html.erb 部分来处理我的问题记录的创建和编辑。当我沿着使用路线走时 我收到以下错误: undefined method `
我是一名优秀的程序员,十分优秀!