До: Используя CarrierWave, я мог без проблем обновить изображение в профиле пользователя новым изображением.
Затем: Я установил ImageMagick
После: Когда я пытаюсь обновить изображение в профиле пользователя, я получаю сообщение об ошибке «невозможно преобразовать ноль в строку».Однако, если я не выбрал новое изображение и просто нажал «обновить», он работает нормально (то есть показывает оригинальное изображение)
Кто-нибудь может увидеть, в чем может быть проблема?
TypeError in UsersController#update
can't convert nil into String
Rails.root: /Users/mm/Sites/AT
Application Trace | Framework Trace | Full Trace
app/controllers/users_controller.rb:64:in `block in update'
app/controllers/users_controller.rb:63:in `update'
Параметры
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"N1/rSIzBwYLFecQ59tCasRpt6Tst7GOSvdEob93ZrrA=",
"user"=>{"name"=>"M",
"email"=>"myemail@gmail.com",
"image"=>#<ActionDispatch::Http::UploadedFile:0x00000102fef328 @original_filename="btc.jpg",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"user[image]\"; filename=\"btc.jpg\"\r\nContent-Type: image/jpeg\r\n",
@tempfile=#<File:/var/folders/rc/rcFucU9oF5qT5vZE+tL1JE+++TI/-Tmp-/RackMultipart20120226-20685-1x4k7ph>>},
"commit"=>"Update User",
"id"=>"2"}
UsersController
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to @user, notice: 'User was successfully updated.' }
format.json { head :ok }
else
format.html { render action: "edit" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
Форма
<%= form_for(@user) do |f| %>
<% if @user.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>
<ul>
<% @user.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.file_field :image %><br />
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>