我已经从头开始遵循修订后的Railscast进行用户身份验证。
我想知道如何添加部分供用户修改个人资料,因为我在注册后需要输入其他字段,如性别,种族,职业,关于我,孩子,身高等。
是否有教程向您展示如何执行此操作,或者有人可以帮我指出正确的方向吗?
我可以在https://github.com/pwz2k/date
查看我的项目文件更新
我已经开始研究它,不确定我是否做得对。我希望用户能够修改他们的帐户设置(注册时使用的字段)。
以下是/ users文件夹中的edit.html。
<h1>Account Information</h1>
<%= form_for @user do |f| %>
<% if @user.errors.any? %>
<div class="error_messages">
<h2>Form is invalid</h2>
<ul>
<% @user.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :email %><br/>
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :password %><br/>
<%= f.password_field :password %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br/>
<%= f.password_field :password_confirmation %>
</div>
<div class="field">
<%= f.label :username %><br/>
<%= f.text_field :username %>
</div>
<div class="field">
<%= f.label :zip_code %><br/>
<%= f.text_field :zip_code %>
</div>
<div class="field">
<%= f.label :birthday %><br/>
<%= f.text_field :birthday %>
</div>
<div class="actions"><%= f.submit %></div>
<% end %>
这是我的路线:
Dating::Application.routes.draw do
get 'signup' => 'users#new'
get 'login' => 'sessions#new'
get 'logout' => 'sessions#destroy'
get 'edit' => 'edit#edit'
resources :users
resources :sessions
resources :password_resets
root to: 'users#new'
以下是我添加到users_controller的内容,我不确定我做得不好:
def edit
@user = User.find(params[:user])
end
def update
@user = User.find(params[:user])
if @user.update_attributes(params[:user])
flash[:success] = "Account updated"
sign_in @user
redirect_to @user
else
render 'edit'
end
我最终如何使一切正常工作用户将进入/编辑以修改他们的帐户设置以及他们在注册期间填写的所有私人信息。然后,用户可以直接在他们的个人资料页面上编辑个人资料信息(性别,种族,职业,关于我等)(将使用就地编辑)。所以我只需要知道我所采取的步骤是否正确(我还没有使用过终端),如果是这样的话,如何显示编辑页面,因为它显示了路由错误atm。
答案 0 :(得分:1)
只是一些一般性的指示。
在Railscast中,正在创建users_controller
的{{1}}和new
个操作。您想要修改用户,因此您可以构建此控制器的create
和edit
操作。
update
在您的路线中,您可以弄清楚如何路由# app/controllers/users_controller.rb
class UsersController < ...
def new
# exists
end
def create
# exists
end
def edit
# load the current_user; make sure a user can only edit his record!
end
def update
# save edit for the current_user, same security as above
end
end
单数资源(Rails guides)以映射到相应的操作。