2015-12-08 2 views
0

поэтому у меня есть еще одна уникальная проблема ...CarrierWave - неопределенный метод `IMAGE_URL»

Я проверил это TOPIC и не работал ... Я из идей на этой стадии ...

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

Screenshot with Error

Upload Screenshot

Я действительно не понимаю, почему этот код не работает ... А я что-то забыл?

show.html.erb

<% provide(:title, @user.name) %> 
    <div class="container"> 
    <div id="content-move"> 
     <div class="row"> 
     <aside class="col-md-4"> 
      <section class="user_info"> 
      <h1> 
       <%= gravatar_for @user %> 
       <%= @user.name %> 
      </h1> 
      </section> 
     </aside> 
     <div class="col-md-8"> 
      <% if @user.microposts.any? %> 
      <h3>User Posts (<%= @user.microposts.count %>)</h3> 
      <div> 
       <%= image_tag @microposts.image_url.to_s if @microposts.image_url.present? %> 
      </div> 
      <ol class="microposts"> 
       <%= render @microposts %> 
      </ol> 
      <% end %> 
     </div> 
     </div> 

_micropost_form.html.erb

<%= form_for(Micropost.new) do |f| %> 
     <%= render 'shared/error_messages', object: f.object %> 
     <div class="field"> 
     <%= f.text_area :content, placeholder: "Compose new micropost..." %> 
     </div> 
     <div> 
     <%= f.file_field :image %> 
     </div> 
     <%= f.submit "Post", class: "btn btn-primary" %> 
    <% end %> 

micropost.rb

class Micropost < ActiveRecord::Base 
     belongs_to :user # Association with User 
     has_many :comments 

     mount_uploader :image, ImageUploader 

     validates :user_id, presence: true 
     validates :posttitle, presence: true, length: { maximum: 100 } 
     validates :content, presence: true, length: { maximum: 500 } 
     validates :posttitle, presence: true, length: { maximum: 140 } 

     default_scope -> { order(created_at: :desc) } 
    end 

ответ

1

В этой линии:

<%= image_tag @microposts.image_url.to_s if @microposts.image_url.present? %> 

@microposts представляет собой набор записей, ни один micropost запись. Вы можете либо просмотреть все изображения:

<% @microposts.each do |mp| %> 
    <%= image_tag mp.image_url.to_s if @mp.image_url.present? %> 
<% end %> 

или отображения изображения первого micropost:

<%= image_tag @microposts.first.image_url.to_s if @microposts.first.image_url.present? %> 

Однако, кажется, что это то, что должно быть перемещены внутри вашего _micropost.html.erb частичное (render @microposts), где вы может отображать изображение рядом со своим сообщением.

+0

Я пытаюсь отображать сообщения с изображениями рядом с ними. Так же, как вы сказали в последнем предложении. Как использовать рендеринг @microposts в моем коде? – Fresz

+0

@Fresz - У вас уже есть код. Эта строка будет перебирать вашу коллекцию, создавая шаблон 'microposts/_micropost' для каждого элемента. Поэтому, если вы хотите добавить изображение в каждый пост, вам нужно сделать это в частичном. – BroiSatse

+0

Хорошо, это имеет смысл, когда я его читаю, но когда я возвращаюсь к коду ... не знаю, как это исправить. Должен ли я помещать image_tag в render? – Fresz

Смежные вопросы