【发布时间】:2015-11-21 19:35:53
【问题描述】:
我对 Rails 很陌生,正在尝试通过构建个人资料页面来进行一些练习。我已经实现了设计,一旦用户登录,他们就可以单击一个链接,该链接显示包含有关他们的信息的个人资料。现在它只显示他们的姓名、出生日期和性别。我希望它也显示它们的图像。所以我捆绑了回形针 gem 并阅读了一些教程来尝试配置它。我已经准备好代码,以便用户可以单击“选择文件”并选择图像。但是,当我单击“更新”时,它会给我一个错误。我希望图像显示在他们个人资料的同一显示页面上。
profiles_controller.rb
class Users::ProfilesController < ApplicationController
def edit
@profile = Profile.create(params[:photo])
end
def create
end
private
def profile_params
params.require(:profile).permit(:photo)
end
end
profiles/edit.html.erb
<h2>Edit Account Profile </h2>
<%= form_for(@profile, url: profiles_edit_path(@profile), html: { :multipart => true }) do |f| %>
<li>
<%= f.label :photo, "Photo" %>
<%= f.file_field :photo %>
</li>
<div class="actions">
<%= f.submit "Update" %>
</div>
<% end %>
<%= link_to "Back", :back %>
registrations/show.html.erb
<%= image_tag @profile.photo.url %>
<br>
<%= @user.email %>
<br>
<%= @user.first_name %>
<%= @user.last_name %>
<br>
<%= @user.date_of_birth %>
<br>
<%= @user.is_female %>
registrations_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController
def show
@user = User.find(params[:id])
end
private
def sign_up_params
params.require(:user).permit(:first_name, :last_name, :is_female, :date_of_birth, :email, :password, :password_confirmation)
end
def account_update_params
params.require(:user).permit(:first_name, :last_name, :is_female, :date_of_birth, :email, :password, :password_confirmation, :current_password)
end
end
routes.rb
Rails.application.routes.draw do
devise_for :users, :controllers => { :registrations => 'users/registrations', :profiles => 'users/profiles' }
devise_scope :user do
get 'profiles/edit' => 'users/profiles#edit'
post 'profiles/edit' => 'users/profiles#edit'
get 'users/:id' => 'users/registrations#show', as: :user
end
root to: "home#index"
end
点击更新后出错:
路由错误 没有路由匹配 [PATCH] "/profiles/edit.21"
感谢您的帮助,如果需要任何进一步的信息,请告诉我。
【问题讨论】:
标签: ruby-on-rails image devise paperclip image-uploading