我是新手。我正在使用rails 3.2.20和carrierwave gem来以两种形式上传图像,即ShorttermCourse和OrientationCourse,效果很好。每当我尝试使用以下方式在ShorttermCourse中显示上载的图像时:
<%= image_tag(@shortterm_course.image_url(:thumb).to_s, :class => @shortterm_course.image? ? "img-responsive img-thumbnail" : nil) %>
它给出以下错误:
#ShorttermCourse:0x007f9de0204ad8的 undefined 方法“image_url”
但是类似的代码显示了OrientationCourse的图像。
当我重新启动Rails服务器时,它会显示ShorttermCourse的图像,但随后会为OrientationCourse停止工作,并给出 undefined 的方法“image_url”错误。这是ShorttermCourse的文件:
show.html.erb:
<!-- row -->
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Individual Record</h1>
</div>
<!-- /.col-lg-12 -->
<p id="notice"><%= notice %></p>
</div>
<!-- /.row -->
<!-- row -->
<div class="row">
<div class="col-lg-12">
<%= image_tag(@shortterm_course.image_url(:thumb).to_s, :class => @shortterm_course.image? ? "img-responsive img-thumbnail" : nil) %>
<div class="table-responsive">
<table class="table table-striped table-hover">
<tr>
<th>ID</th>
<th>Name</th>
<th>Gender</th>
<th>Religion</th>
<th>Category</th>
<th>Marital status</th>
<th>Email</th>
<th>Stream</th>
<th>College</th>
</tr>
<tr class="success">
<td><%= @shortterm_course.id %></td>
<td><%= @shortterm_course.name %></td>
<td><%= @shortterm_course.gender %></td>
<td><%= @shortterm_course.religion %></td>
<td><%= @shortterm_course.category %></td>
<td><%= @shortterm_course.marital_status %></td>
<td><%= @shortterm_course.email %></td>
<td><%= @shortterm_course.stream %></td>
<td><%= @shortterm_course.college %></td>
</tr>
</table>
<table class="table table-striped table-hover">
<tr>
<th>University</th>
<th>City</th>
<th>District</th>
<th>State</th>
<th>Position</th>
<th>Payscale</th>
<th>Subject</th>
<th>Std Code</th>
<th>Landline</th>
</tr>
<tr class="success">
<td><%= @shortterm_course.university %></td>
<td><%= @shortterm_course.city %></td>
<td><%= @shortterm_course.district %></td>
<td><%= @shortterm_course.state %></td>
<td><%= @shortterm_course.position %></td>
<td><%= @shortterm_course.payscale %></td>
<td><%= @shortterm_course.subject %></td>
<td><%= @shortterm_course.std_code %></td>
<td><%= @shortterm_course.landline %></td>
</tr>
</table>
<table class="table table-striped table-hover">
<tr>
<th>Mobile</th>
<th>University pin</th>
<th>Dob</th>
<th>Date of joining</th>
<th>Preferred date1</th>
<th>Preferred date2</th>
<th>Residential address</th>
<th>Pin</th>
<th>Phd</th>
</tr>
<tr class="success">
<td><%= @shortterm_course.mobile %></td>
<td><%= @shortterm_course.university_pin %></td>
<td><%= @shortterm_course.dob %></td>
<td><%= @shortterm_course.date_of_joining %></td>
<td><%= @shortterm_course.pref_date1 %></td>
<td><%= @shortterm_course.pref_date2 %></td>
<td><%= @shortterm_course.res_address %></td>
<td><%= @shortterm_course.pin %></td>
<td><%= @shortterm_course.phd %></td>
</tr>
</table>
</div>
<!-- /.table-responsive -->
<%= link_to 'Edit', edit_shortterm_course_path(@shortterm_course), :class => 'btn btn-default' %>
<%= link_to 'Delete', shortterm_course_path, method: :delete, :class => 'btn btn-default', data: { confirm: 'Are you sure?' } %>
<%= link_to 'Back', shortterm_record_path, :class => 'btn btn-default' %>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /. row -->
shortterm_courses_controller.rb
class ShorttermCoursesController < ApplicationController
before_filter :authenticate_admin!, :only => [:show, :edit, :update, :destroy, :record]
layout "adminDashboard", :only => [:show, :edit, :update, :destroy, :record]
# GET /shortterm_courses
# GET /shortterm_courses.json
def index
raise ActionController::RoutingError.new('Not Found')
end
# GET /shortterm_courses/1
# GET /shortterm_courses/1.json
def show
@shortterm_course = ShorttermCourse.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @shortterm_course }
end
end
#List of record
def record
@shortterm_courses = Kaminari.paginate_array(ShorttermCourse.all).page(params[:page]).per(4)
respond_to do |format|
format.html
format.json { render json: @shortterm_courses }
end
end
# GET /shortterm_courses/new
# GET /shortterm_courses/new.json
def new
@shortterm_course = ShorttermCourse.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @shortterm_course }
end
end
# GET /shortterm_courses/1/edit
def edit
@shortterm_course = ShorttermCourse.find(params[:id])
end
# POST /shortterm_courses
# POST /shortterm_courses.json
def create
@shortterm_course = ShorttermCourse.new(params[:shortterm_course])
respond_to do |format|
if @shortterm_course.save
format.html { redirect_to registered_path }
format.json { render json: @shortterm_course, status: :created, location: @shortterm_course }
else
format.html { render action: "new" }
format.json { render json: @shortterm_course.errors, status: :unprocessable_entity }
end
end
end
# PUT /shortterm_courses/1
# PUT /shortterm_courses/1.json
def update
@shortterm_course = ShorttermCourse.find(params[:id])
respond_to do |format|
if @shortterm_course.update_attributes(params[:shortterm_course])
format.html { redirect_to @shortterm_course, notice: 'Shortterm course was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @shortterm_course.errors, status: :unprocessable_entity }
end
end
end
# DELETE /shortterm_courses/1
# DELETE /shortterm_courses/1.json
def destroy
@shortterm_course = ShorttermCourse.find(params[:id])
@shortterm_course.destroy
respond_to do |format|
format.html { redirect_to shortterm_record_path}
format.json { head :no_content }
end
end
end
shortterm_course.rb
class ShorttermCourse < ActiveRecord::Base
belongs_to :course
attr_accessible :category, :city, :college, :subject, :date_of_joining, :district, :dob, :email, :gender, :landline, :marital_status, :mobile, :name, :payscale, :phd, :pin, :position, :pref_date1, :pref_date2, :religion, :res_address, :state, :stream, :university, :university_pin, :std_code, :alternate_email, :image, :course_id
mount_uploader :image, ImageUploader
end
OrientationCourse模型与ShorttermCourse模型相似,因此OrientationCourse的代码相似。
我无法找出问题所在,我已经查看了以下问题Carrierwave NoMethodError: undefined method `image_url' for Item,但是我的问题有所不同。
因此,请为此提供帮助。谢谢!
最佳答案
应该是@shortterm_course.image.url(:thumb)
关于ruby-on-rails - Rails载波:#<ShorttermCourse:0x007f9de0204ad8>的未定义方法“image_url”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28431746/