Please help. Two days installing Carrierwave, but stopped at errors:
Showing /home/dima/rails_projects/my_store/app/views/items/show.html.erb where line #8 raised: undefined method `image_url' for #
items_controller.rb:
def show
unless @item
render text: "Page not here", status: 404
end
end
def new
@item = Item.new
end
def create
@item = Item.create(item_params)
if @item.errors.empty?
redirect_to item_path(@item)
else
render "new"
end
end
def update
@item.update_attributes(item_params)
if @item.errors.empty?
redirect_to item_path(@item)
else
render "edit"
end
end
def item_params
params.require(:item).permit(:name, :description, :price, :weight, :real, :image_attributes)
end
end
show.html.erb:
<h1><%= @item.name%></h1>
<ul>
<li>Цена: <%= @item.price %> грн.</li>
<li>Описание: <%= urls_to_links(urls_to_images(@item.description)) %></li>
<li>Вес: <%= @item.weight %> кг</li>
<li>Реальный: <%= @item.real %></li>
<%= image_tag @item.image_url.to_s %>
</ul>
item.rb
class Item < ActiveRecord::Base
validates :price, numericality: { greater_than: 0, allow_nil: true }
validates :name, :description, presence: true
# has_one :image
# accepts_nested_attributes_for :image
end
image.rb
class Image < ActiveRecord::Base
mount_uploader :image, ImageUploader
# belongs_to :imageable, polymorphic: true
end
new.html.erb
<h1>Create new item</h1>
<%= form_for @item, :html => {:multipart => true} do |f| %>
<%= render partial: "form", locals: { f: f } %>
<p><%= f.submit "Создать товар" %></p>
<% end %>
_form.html.erb
<p>Наименоваие: <%= f.text_field :name %></p>
<p>Описание: <%= f.text_field :description %></p>
<p>Цена: <%= f.text_field :price %></p>
<p>Вес: <%= f.text_field :weight %></p>
<p>Реальный: <%= f.text_field :real %></p>
<label>My Image</label>
<p><%= f.file_field :image %></p>
Tried different variants (like withouts '#'). Please help in leaning Rails.
(Last time installed by screencast http://railscasts.com/episodes/253-carrierwave-file-uploads )
Upd:
If I use
def item_params
params.require(:item).permit(:name, :description, :price, :weight, :real, :image)
end
Have an error:
TypeError: can't cast ActionDispatch::Http::UploadedFile to string: INSERT INTO "items" ("created_at", "description", "image", "name", "price", "updated_at", "weight") VALUES (?, ?, ?, ?, ?, ?, ?)