2013-10-01 1 views
1

Я сгораю через учебник onemonthrails. И я только что установил драгоценный камень скрепки и установил модель с некоторыми валидациями. Я думал, что я слежу за тетом точно, но когда я иду в localhost: 3000/pins, я получаю эту странную синтаксическую ошибку, которая указывает на модель и контроллер. У меня не был эта проблема до скрепки установки ...Ошибка синтаксиса в модели и контроллере после настройки Paperclip Gem

Вот ошибка:

SyntaxError (C:/Sites/code/omrails/app/models/pin.rb:7: syntax error, unexpected 

'}', expecting tASSOC): 

app/controllers/pins_controller.rb:9:in `index' 

Вот филиал GitHub, если вы идете в мастер вы можете увидеть код, прежде чем я установил скрепку (когда он работал отлично):

https://github.com/justuseapen/omrails/tree/error

EDIT Вот обижая код из модели:

class Pin < ActiveRecord::Base 


    validates :description, presence: true 
    validates :user_id, presence: true 
    validates_attachment :image, presence: true 
                   content_type: {content_type['image/jpeg','image/jpg','image/png','image/gif']} 
                   size: {less_than: 5.megabytes } 
    belongs_to :user 
    has_attached_file :image, styles: {medium:"320x240"} 

end 

И от контроллера:

class PinsController < ApplicationController 
    before_filter :authenticate_user!, except: [:index] 

    before_action :set_pin, only: [:show, :edit, :update, :destroy] 

    # GET /pins 
    # GET /pins.json 
    def index 
    @pins = Pin.all 
    end 

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

    # GET /pins/new 
    def new 
    @pin = current_user.pins.new 


    end 

    # GET /pins/1/edit 
    def edit 
    @pin=current_user.pins.find(params[:id]) 
    end 

    # POST /pins 
    # POST /pins.json 
    def create 
    @pin = current_user.pins.new(pin_params) 

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

    # PATCH/PUT /pins/1 
    # PATCH/PUT /pins/1.json 
    def update 
    @pin=current_user.pins.find(params[:id]) 
    respond_to do |format| 
     if @pin.update(pin_params) 
     format.html { redirect_to @pin, notice: 'Pin was successfully updated.' } 
     format.json { head :no_content } 
     else 
     format.html { render action: 'edit' } 
     format.json { render json: @pin.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # DELETE /pins/1 
    # DELETE /pins/1.json 
    def destroy 
    @pin=current_user.pins.find(params[:id]) 
    @pin.destroy 
    respond_to do |format| 
     format.html { redirect_to pins_url } 
     format.json { head :no_content } 
    end 
    end 

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

    # Never trust parameters from the scary internet, only allow the white list through. 
    def pin_params 
     params.require(:pin).permit(:description, :image) 
    end 
end 

РЕШЕНИЕ:

Ok. Так что я не уверен, что проблема была, но я переписал код, как так, и она работала:

validates :description, presence: true 
    validates :user_id, presence: true 
    has_attached_file :image, styles: { medium: "320x240>"} 
    validates_attachment :image, presence: true, 
          content_type: { content_type: ['image/jpeg', 'image/jpg', 'image/png', 'image/gif'] }, 
          size: { less_than: 5.megabytes } 
    belongs_to :user 

end 
+1

Вам нужно разместить код здесь, а не ссылку на ваш репозиторий. –

+0

также, лучше опубликовать код после его сломания - рабочий код трудно отлаживать: p – dax

+0

Ветвь ошибки является сломанным кодом. Рабочий код находится в master от предыдущего commit. Я также включил сломанные здесь. –

ответ

2

У вас есть запятые там, где не должно быть один.

validates_attachment :image, presence: true, 

должен быть

validates_attachment :image, presence: true 
+0

Я удалил запятую, но это только что дало мне еще одну ошибку: SyntaxError (C: /Sites/code/omrails/app/models/pin.rb: 7: синтаксическая ошибка , неожиданные ':', ожидая keyword_end content_type: {content_type [ 'ИМА GE/JPEG', '... ^ C: /Sites/code/omrails/app/models/pin.rb: 7 : синтаксическая ошибка, неожиданный '}', expecti ng tASSOC): app/controllers/pins_controller.rb: 9: in 'index ' –

+0

Кроме того, запятые включены в учебник, поэтому я действительно запутался. –

0

У вас есть синтаксические ошибки за the documentation на проверку. Вы должны передать массив строк для вашей проверки content_type:

content_type: ['image/jpeg','image/jpg','image/png','image/gif'] 
Смежные вопросы