У меня есть модель, которая выглядит следующим образом:ноль Пользователь при загрузке изображения с TinyMCE
class Post < ActiveRecord::Base
has_attached_file :file
def user_name
@user.name
end
belongs_to :user
end
я могу создать новый пост (без изображений) нет проблем. Однако, когда я пытаюсь вставить изображение, я получаю ошибку undefined method 'name' for nil:NilClass
. Если я вывожу user_name
, загрузка изображений будет работать.
форма выглядит следующим образом:
<%= simple_form_for @post do |f| %>
<%= f.text_area :body, :class => "tinymce textarea" %>
<% end %>
Вот ошибка:
Processing by TinymceAssetsController#create as HTML
...
(0.2ms) begin transaction
(0.1ms) rollback transaction
Completed 500 Internal Server Error in 134ms
NoMethodError (undefined method `name' for nil:NilClass):
app/models/post.rb:14:in `user_name'
app/controllers/tinymce_assets_controller.rb:6:in `create'
и Heres контроллер TinyMCE:
class TinymceAssetsController < ApplicationController
respond_to :json
def create
geometry = Paperclip::Geometry.from_file params[:file]
question = Question.create params.permit(:file, :alt, :hint)
@user = User.find(question.user_id)
render json: {
image: {
url: question.file.url,
height: geometry.height.to_i,
width: geometry.width.to_i
}
}, layout: false, content_type: "text/html"
end
end
Как сделать доступ user
при загрузке изображений?
, не видя формы, я не могу сказать точно, но могу сказать, что объект, который вы называете 'name' on, равен нулю. Итак, посмотрите на свою форму и выясните, какой у объекта нет. - Возможно, попробуйте '@ user.name' – xcskier56
Не могли бы вы вставить соответствующее действие контроллера и форму? – xcskier56
Отредактировано. Я использую tinymce для загрузки изображения, поэтому у меня есть отдельный контроллер для загрузки изображений. Я вложу полную ошибку. – user2759575