Плагин jQuery для изображений приложений рельсов не загружается

Я использую плагин jQuery Raty для своего приложения ruby ​​on rails 4.0, и он работает, за исключением того, что изображения звезд не загружаются на экран.

Таким образом, эти изображения должны быть звездочками ^ Когда я наводю курсор мыши на них в консоли во время работы веб-кирпича, выводится следующее. (Мой эшафот называется отзывы)

Запустил GET "/reviews/star-off.png" для 127.0.0.1 в 2014-03-28 14:15:42 -0400 Обработка ReviewsController#show as PNG Parameters: {"id"=>"star-off"} Загрузка нагрузки (1,3 мс) ВЫБЕРИТЕ "reviews".* FROM "рецензии" WHERE "reviews"."Id" = $1 LIMIT 1 [["id", "star-off"]] Завершено 404 Не найдено в 2ms ActiveRecord::RecordNotFound (Не удалось найти рецензию с id=star-off): app/controllers/reviews_controller.rb:67: в `set_review'

В настоящее время у меня есть звездные изображения в приложениях /assets/javascripts/images, но я также пытался поместить их в app / assets / images и app / views / reviews, но они по-прежнему не отображаются. Моя проблема в том, что они не находятся в правильном каталоге (и если да, то в каком каталоге они должны быть), или мне нужно вручную добавить некоторый код в мой контроллер обзоров? Благодарю.

редактировать: так, когда я пытаюсь использовать его на моей странице индекса, я получаю только сообщение об ошибке, так что я должен что-то сделать с моим маршрутом.

ActionController::RoutingError (нет совпадений с маршрутом [GET] "/star-off.png")

отредактируйте: как просили здесь - route.rb

ConcertReview::Application.routes.draw do
resources :reviews

get "review/index"
get "review/artist"
get "review/date"
get "review/venue"
get "review/genre"
get "review/comments"

root 'reviews#index'

get 'reviews/' => 'reviews#index'
end

и вот reviews_controller.rb (сгенерированный автоматически из скаффолда и не модифицированный)

class ReviewsController < ApplicationController
  before_action :set_review, only: [:show, :edit, :update, :destroy]

  # GET /reviews
  # GET /reviews.json
  def index
    @reviews = Review.all
  end

  # GET /reviews/1
  # GET /reviews/1.json
  def show
  end

  # GET /reviews/new
  def new
    @review = Review.new
  end

  # GET /reviews/1/edit
  def edit
  end

  # POST /reviews
  # POST /reviews.json
  def create
    @review = Review.new(review_params)

    respond_to do |format|
      if @review.save
        format.html { redirect_to @review, notice: 'Review was successfully created.' }
        format.json { render action: 'show', status: :created, location: @review }
      else
        format.html { render action: 'new' }
        format.json { render json: @review.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /reviews/1
  # PATCH/PUT /reviews/1.json
  def update
    respond_to do |format|
      if @review.update(review_params)
        format.html { redirect_to @review, notice: 'Review was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: 'edit' }
        format.json { render json: @review.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /reviews/1
  # DELETE /reviews/1.json
  def destroy
    @review.destroy
    respond_to do |format|
      format.html { redirect_to reviews_url }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_review
      @review = Review.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def review_params
      params.require(:review).permit(:artist, :venue, :date, :genre, :sound, :stagePresence, :songSelection, :overallRating, :comments)
    end
end

1 ответ

У меня была та же самая проблема в моем проекте. Изображения звездочек принадлежат app/assets/images, как вы и пробовали. Тем не менее, вам нужно передать raty параметр path, например, такой:

$('div').raty({
  readOnly: true,
  halfScore: true,
  score: 3, 
  path: '/assets'
});

Это работает для меня.

Кроме того, если у вас есть турболинки, вам придется настроить любой $(document).ready(function () {...}); Ты можешь иметь. Это была проблема, с которой я столкнулся сразу после этого.

Другие вопросы по тегам