2015-09-22 13 views
5

Sử dụng postman để POST một chút JSON được tạo trong DB, có đoạn mã để bạn thử nghiệm. Nhận được một lỗi nói rằng phương pháp 'phim' là không xác định, nhưng phương pháp đó không bao giờ được gọi.RoR - phương pháp chưa xác định `phim 'cho # <Movie: 0x007fa43a0629e0>

{"movie": { 
    "title": "Its a Mad Mad Word", 
    "year": "1967", 
    "summary": "So many big stars" 
    } 
} 

Dưới đây là mã, và lỗi này là như sau:

undefined method 'movie' for #<Movie:0x007fcfbd99acc0>

điều khiển ứng dụng

class ApplicationController < ActionController::Base 
    protect_from_forgery with: :null_session 
end 

khiển

module API 
    class MoviesController < ApplicationController 
... 
     def create 
      movie = Movie.new({ 
       title: movie_params[:title].to_s, 
       year: movie_params[:year].to_i, 
       summary: movie_params[:summary].to_s 
      }) 
      if movie.save 
       render json: mov, status: 201 
      else 
       render json: mov.errors, status: 422 
      end 

     end 

     private 
     def movie_params 
      params.require(:movie).permit(:title, :year, :summary) 
     end 
    end 
end 

mẫu

class Movie < ActiveRecord::Base 
    validates :movie, presence: true 
end 

Migration

class CreateMovies < ActiveRecord::Migration 
    def change 
    create_table :movies do |t| 
     t.string :title 
     t.integer :year 
     t.text :summary 

     t.timestamps null: false 
    end 
    end 
end 

đường

Rails.application.routes.draw do 
    namespace :api do 
    resources :movies, only: [:index, :show, :create] 
    end 
end 
+0

đã không được sử dụng như một API, nhưng việc xác thực đó trong mô hình của bạn có vẻ giống như cá. –

+0

vì bạn là người mới bắt đầu tôi thực sự cần phải nói, tôi thích cách câu hỏi của bạn trông như thế nào! –

Trả lời

4

validations được sử dụng để đảm bảo rằng chỉ dữ liệu hợp lệ sẽ được lưu vào cơ sở dữ liệu của bạn, vì vậy bạn nên xác nhận lĩnh vực điện ảnh (tiêu đề, năm , tóm tắt)

validates :movie, presence: true 

thay đổi nó thành:

validates :title, presence: true 
validates :year, presence: true 
validates :summary, presence: true 

Bạn có thể nhận được thông tin nhiều hơn từ here

/chỉnh sửa bởi huanson bạn cũng có thể tóm tắt:

Rails
validates :title, :year, :summary, presence: true 
Các vấn đề liên quan