我正确设置了Devise身份验证,并且我正在尝试添加用户个人资料页面(目前正在使用users#show
)。
我希望用户能够获得地址等信息。
我是否必须为此创建模型,因为我希望用户使用它进行CRUD?
以下是我现在所拥有的:
show.html.erb
<%= content_for :title, "#{current_user.prenom} #{current_user.nom} - profil" %>
<%= render partial: 'layouts/jsnav' %>
<%= render partial: 'users/header' %>
<div class="tab">
<button class="tablinks" onclick="openCity(event, 'infos')">Mes informations</button>
<button class="tablinks" onclick="openCity(event, 'adresses')">Mes adresses</button>
<button class="tablinks" onclick="openCity(event, 'commandes')">Mes commandes</button>
<button class="tablinks" onclick="openCity(event, 'avis')">Mes avis</button>
<button class="tablinks" onclick="openCity(event, 'fidelite')">Espace fidélité</button>
<button class="tablinks" onclick="openCity(event, 'parrainage')">Parrainage</button>
</div>
<div id="infos" class="tabcontent">
<%= render partial: 'users/informations' %>
</div>
<div id="adresses" class="tabcontent">
<%= render partial: 'users/adresses' %>
</div>
<div id="commandes" class="tabcontent">
<%= render partial: 'users/commandes' %>
</div>
<div id="avis" class="tabcontent">
<%= render partial: 'users/avis' %>
</div>
<div id="fidelite" class="tabcontent">
<%= render partial: 'users/fidelite' %>
</div>
<div id="parrainage" class="tabcontent">
<%= render partial: 'users/parrainage' %>
</div>
users_controller.rb
:
class UsersController < ApplicationController
include Devise::Controllers::Helpers
before_filter :authenticate_user!
def show
@user = User.find(params[:id])
@user_adresse = current_user.adresse
end
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
@user.assign_attributes(user_params)
if @user.save
flash[:notice] = "Votre profil a été modifié"
else
flash[:alert] = "Une erreur est survenue lors de la modification de votre profil"
end
end
private
def user_params
params.require(:user).permit!
end
end
以下是部分users/adresses
:
<section id="user-add-adresse-container">
<% if @current_user.adresse %>
<%= current_user.adresse %>
<% end %>
<%= form_for @user, url: edit_user_path(@user), method: :get do |f| %>
<div class="field" id="adresse-field">
<%= f.label :adresse %>
<%= f.text_field :adresse, placeholder: 'Saisissez votre adresse' %>
</div>
<div class="field" id="adresse-field">
<%= f.label :code_postal %>
<%= f.text_field :code_postal, placeholder: 'Saisissez votre code postal' %>
</div>
<div class="field" id="adresse-field">
<%= f.label :ville %>
<%= f.text_field :ville, placeholder: 'Saisissez votre ville' %>
</div>
<div class="field" id="adresse-field">
<%= f.label :pays %>
<%= f.select :pays, User::CHOIX_PAYS, placeholder: 'Sélectionnez votre pays' %>
</div>
<div class="submit" id="user-add-adresse-submit">
<%= f.submit "Ajouter l'adresse" %>
</div>
<% end %>
</section>
这不起作用。这里有一些我想念的东西。