Rails: невозможно преобразовать ноль в строковое сообщение об ошибке - PullRequest
2 голосов
/ 26 февраля 2012

До: Используя 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 %>

1 Ответ

0 голосов
/ 26 февраля 2012

Проблема заключалась в том, что я не запускал сервер с ключом Amazon, поэтому файл не загружался, поэтому он не мог преобразовать ноль в строку при попытке показать изображение.

...