【发布时间】:2015-06-07 15:49:40
【问题描述】:
我正在尝试为我的用户创建一个编辑个人资料选项。我传递给表单 ":name" 的参数之一不起作用 - 我在哪里定义 :name 以便我的表单可以接受它并更新用户? “/users/3/edit 中的 NoMethodError #"的未定义方法“名称”
我的用户控制器:
class UsersController < ApplicationController
skip_before_filter :require_login, only: [:new, :create]
def new
@user = User.new
end
def edit
@user = User.find(params[:id])
end
def create
@user = User.new(user_params)
if @user.save
redirect_to root_url, :notice => "Signed up!"
else
render :new
end
end
def show
@user = User.find(params[:id])
if current_user
@comment = @user.comments.build
end
end
private
def user_params
params.require(:user).permit(:email, :password, :password_confirmation, :handle, :avatar)
end
end
用户模型:
class User < ActiveRecord::Base
authenticates_with_sorcery!
validates :email, :handle, :name, uniqueness: true, presence: true
validates :password, confirmation: true
validates :password_confirmation, presence: true
has_many :game_players, foreign_key: :player_id
has_many :games, through: :game_players
has_many :comments
has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100#" }, :default_url => "/images/:style/missing.png"
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
def total_wins
self.games.where.not(winner_id: nil).where(winner_id: self.id).count
end
def total_games
self.games.where.not(winner_id: nil).count
end
def total_losses
total_games - total_wins
end
def win_rate
total_games != 0 ? total_wins / total_games.to_f : 0
end
end
表格:
= form_for @user do |f|
.field
= f.label :name
= f.text_field :name
.field
= f.label :email
= f.text_field :email
.field
= f.label :gender
= f.password_field :gender
.field
= f.label :location
= f.password_field :location
.field
= f.label :bio
%br/
= f.password_field :bio
= f.file_field :avatar
%br/
= f.submit "Update"
请注意,我没有单独的配置文件模型/控制器 - 我只是在用户模型下使用用户/编辑视图。
我尝试将 :name 添加到架构中,但没有成功。如您所见,我对此很陌生,我们将不胜感激您的帮助! 谢谢!
【问题讨论】:
-
您的
users数据库表中有name字段吗? -
在架构中?是的,我输入了 t.string "name",但它仍然不起作用。我没有编辑/创建用户迁移,我使用了巫术。我应该将 :name 添加到魔法文件还是什么?
标签: ruby-on-rails ruby forms models