我是新手。我正在使用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/

10-12 14:16