我遵循本教程: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'
欣赏任何想法。
由于
答案 0 :(得分:1)
我在这里看到一些问题:
create
将保存,因此您不需要其他@post.save
。create
会返回新的Post
对象,但您必须检查是否已成功保存(通过@post.persisted
或if @post.save
)。multipart/form-data
设置,根本没有提交图像文件。将其添加到simple_form(paperclip README):
<%= simple_form_for @post, html: { multipart: true } do |f| %>