0

我从头开始遵循修改后的 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

我最终将如何让一切正常工作是用户将转到 /edit 以使用注册期间填写的所有私人信息修改他们的帐户设置。然后用户可以直接在他们的个人资料页面上编辑个人资料信息(性别、种族、职业、关于我等)(将使用就地编辑)。所以我只需要知道我采取的步骤是否正确(我还没有使用终端),如果是,我如何让编辑页面显示,因为它显示路由错误 atm。

4

1 回答 1

2

只是一些一般性的指针。

在 Railscasts中,正在创建users_controller'snew和actions。create你想编辑一个用户,所以你可以构建这个控制器的editupdate操作。

# 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

在您的路线中,您可以弄清楚如何路由resource :profile单一资源(Rails 指南)以映射到适当的操作。

于 2013-02-20T21:08:05.703 回答