我正在尝试创建一个用户show
页面(将用作个人资料页面)但我对如何使用Devise这样做感到困惑.似乎Devise没有任何类型的show
定义 - 有没有什么方法可以访问Devise正在实现的控制器,以便制作一个或者我必须覆盖它们?
现在,用户可以编辑一些属性,而无需输入密码,因为我的验证设置如下:
validates :password, :presence =>true, :confirmation => true, :length => { :within => 6..40 }, :on => :create
validates :password, :confirmation => true, :length => { :within => 6..40 }, :on => :update, :unless => lambda{ |user| user.password.blank? }
Run Code Online (Sandbox Code Playgroud)
但是,在用户执行此操作后,将删除其密码 - update_attributes将其密码更新为"".这是我的更新定义:
def update
if @user.update_attributes(params[:user])
flash[:success] = "Edit Successful."
redirect_to @user
else
@title = "Edit user"
render 'edit'
end
end
Run Code Online (Sandbox Code Playgroud)
我也尝试使用另一种使用update_attribute的定义:
def save_ff
@user = User.find(params[:id])
@user.update_attribute(:course1, params[:user][:course1] )
@user.update_attribute(:course2, params[:user][:course2] )
@user.update_attribute(:course3, params[:user][:course3] )
@user.update_attribute(:course4, params[:user][:course4] )
redirect_to …
Run Code Online (Sandbox Code Playgroud) 我正在尝试为Devise提供的User模型添加name属性.我在我的数据库中添加了一个"名称"列,并更改了注册视图,以便它询问用户的名字:
<h2>Sign up</h2>
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<p><%= f.label :name %><br />
<%= f.text_field :name %></p>
<p><%= f.label :email %><br />
<%= f.email_field :email %></p>
<p><%= f.label :password %><br />
<%= f.password_field :password %></p>
<p><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></p>
<p><%= f.submit "Sign up" %></p>
<% end %>
<%= render :partial => "devise/shared/links" %>
Run Code Online (Sandbox Code Playgroud)
它允许我登录,但是当我这样做后检查数据库时,name: nil
.我是否必须向Devise的User
控制器添加一些东西?谢谢!
我正在尝试设置我的程序,以便仅在密码更改时验证密码(这样用户可以编辑其他信息而无需输入密码).
我目前收到错误消息
NoMethodError in UsersController#create, undefined method `password_changed?' for #<User:0x00000100d1d7a0>
Run Code Online (Sandbox Code Playgroud)
当我尝试登录时
这是我的验证码user.rb
:
validates :name, :presence => true,
:length => { :maximum => 50 }
validates :email, :presence => true,
:format => { :with => email_regex },
:uniqueness => { :case_sensitive => false }
validates :password, :presence =>true, :confirmation => true, :length => { :within => 6..40 }, :if=>:password_changed?
Run Code Online (Sandbox Code Playgroud)
这是我的创建方法users_controller.rb
:
def create
@user = User.new(params[:user])
if @user.save
sign_in @user
flash[:success] = "Welcome to the Sample App!"
redirect_to …
Run Code Online (Sandbox Code Playgroud) validation ruby-on-rails password-confirmation nomethoderror
我从我的一个控制器类中得到一个错误,我无法弄清楚为什么.错误是:
SyntaxError in TermsController#show, syntax error, unexpected $end, expecting keyword_end
Run Code Online (Sandbox Code Playgroud)
这是terms_controller.rb:
class TermsController < ApplicationController
def show
@term = Term.find(params[:id])
if @term.id == 1
@title = "Fall"
else if @term.id == 2
@title = "Winter"
else if @term.id == 3
@title = "Spring"
else if @term.id == 4
@title = "Summer"
end
end
end
Run Code Online (Sandbox Code Playgroud)
我的展示页面目前只包括:
<h1> <%= @title %> </h1>
Run Code Online (Sandbox Code Playgroud)
这可能是我失踪的小事 - 谢谢你的帮助!
我以前从未在rails中使用过复选框,也无法弄清楚我做错了什么.当我尝试加载页面时,我收到一条错误消息NoMethodError in Dplans#show, undefined method "merge" for "Art":String
以下是Dplans
show
页面上我的复选框表单的代码:
<%= form_for @dplan, :url=>{ :action=>"update_distribs" } do |f| %>
<%= f.check_box :Art, 'Art' %> <b>Art</b> <br/>
<%= f.check_box :Lit, 'Lit' %> <b>Lit</b> <br/> <br/>
<div class="actions">
<%= f.submit "Save" %>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
艺术和点亮都是字符串而且都attr_accessible
在dplan
.谢谢你的帮助!