Model在rails上没有返回数据ruby

时间:2016-05-12 22:01:48

标签: ruby-on-rails ruby

我遵循本教程:https://www.devwalks.com/lets-build-instagram-in-rails-part-1/

创建instagram版本。当我上传图片,添加标题并提交时,它会按预期重定向到索引页面,但数据似乎没有保存。当我打开rails控制台并尝试使用Posts.first获取帖子时,它返回nil。

控制器:

class PostsController < ApplicationController

    def index

    end

    def new
        @post = Post.new 
    end

    def create
        @post =Post.create(post_params)
        @post.save
        redirect_to posts_path

    end

    private

    def post_params
        params.require(:post).permit(:image, :caption)
    end

end

型号:

class Post < ActiveRecord::Base
    validates :image, presence: true
    has_attached_file :image, styles: { :medium => "640x"}
    validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/
end

form:

<%= simple_form_for @post do |f| %>
  <%= f.input :image %>
  <%= f.input :caption %>
  <%= f.button :submit %>
<% end %>

routes:

resources :posts
  root 'posts#index'

欣赏任何想法。

由于

1 个答案:

答案 0 :(得分:1)

我在这里看到一些问题:

  1. create将保存,因此您不需要其他@post.save
  2. create会返回新的Post对象,但您必须检查是否已成功保存(通过@post.persistedif @post.save)。
  3. 从1&amp; 2,我相信由于图像存在的验证,你的帖子没有保存。
  4. 现在为什么会这样?我猜你的表单没有multipart/form-data设置,根本没有提交图像文件。
  5. 将其添加到simple_form(paperclip README):

    <%= simple_form_for @post, html: { multipart: true } do |f| %>