ruby on rails - Images#show 中的 NameError,未定义局部变量或方法 `image' for #<#<Class:0x007f2179a53d30>:0x007f2174b50238>
ruby on rails - NameError in Images#show, undefined local variable or method `image' for #<#<Class:0x007f2179a53d30>:0x007f2174b50238>
我正在尝试使用 CarrierWave 来允许用户上传图片。现在我只是想在上传后显示图像,但是在点击提交按钮后我得到了 'undefined local variable or method `image' for #<#:0x007f2174b50238>' 标题中显示的错误.
这是我的 images_controller:
class ImagesController < ApplicationController
def new
@image = Image.new
end
def create
@image = Image.new
if @image.save
redirect_to @image
end
end
def show
end
end
和我的 image.rb(型号):
class Image < ActiveRecord::Base
mount_uploader :image, ImageUploader
end
new.html.erb(上传表格):
<%= form_for @image, html: { multipart: true } do |f| %>
<% if @image.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@image.errors.count, "error") %> prohibited this image from being saved:</h2>
<ul>
<% @image.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :image %><br>
<%= f.file_field :image %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
show.html.erb(报错的页面):
<%= image_tag image.image_url %>
并显示 'image' 列存在于我的 schema.rb 中:
ActiveRecord::Schema.define(version: 20160319135740) do
create_table "images", force: :cascade do |t|
t.string "image"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
老实说,我不知道问题出在哪里。根据我读过的每个教程,image_url 应该可以工作,但找不到方法。
有人能帮帮我吗?
试试下面的代码
class ImagesController < ApplicationController
def new
@image = Image.new
end
def create
@image = Image.new(image_params) ##assign image params here
if @image.save
redirect_to @image
end
end
def show
@image = Image.find_by_id(params[:id])
end
private
def image_params
params.require(:image).permit(:image)
end
end
并在 show.html.erb
<%= image_tag @image.image_url %>
我正在尝试使用 CarrierWave 来允许用户上传图片。现在我只是想在上传后显示图像,但是在点击提交按钮后我得到了 'undefined local variable or method `image' for #<#
这是我的 images_controller:
class ImagesController < ApplicationController
def new
@image = Image.new
end
def create
@image = Image.new
if @image.save
redirect_to @image
end
end
def show
end
end
和我的 image.rb(型号):
class Image < ActiveRecord::Base
mount_uploader :image, ImageUploader
end
new.html.erb(上传表格):
<%= form_for @image, html: { multipart: true } do |f| %>
<% if @image.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@image.errors.count, "error") %> prohibited this image from being saved:</h2>
<ul>
<% @image.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :image %><br>
<%= f.file_field :image %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
show.html.erb(报错的页面):
<%= image_tag image.image_url %>
并显示 'image' 列存在于我的 schema.rb 中:
ActiveRecord::Schema.define(version: 20160319135740) do
create_table "images", force: :cascade do |t|
t.string "image"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
老实说,我不知道问题出在哪里。根据我读过的每个教程,image_url 应该可以工作,但找不到方法。
有人能帮帮我吗?
试试下面的代码
class ImagesController < ApplicationController
def new
@image = Image.new
end
def create
@image = Image.new(image_params) ##assign image params here
if @image.save
redirect_to @image
end
end
def show
@image = Image.find_by_id(params[:id])
end
private
def image_params
params.require(:image).permit(:image)
end
end
并在 show.html.erb
<%= image_tag @image.image_url %>