2014-05-05 80 views
0

這裏是我的控制器無法在導軌4上使用回形針連接照片?

class ArticlesController < ApplicationController 
def new 
    @article=Article.new 

end 
def index 
    @articles = Article.all 
end 
def create 
    @article = Article.new(article_params) 
    if @article.save 
     redirect_to @article 
    else 
     render 'new' 
    end 
end 
def show 
    @article = Article.find(params[:id]) 
end 
def edit 
     @article = Article.find(params[:id]) 


end 
def update 
@article = Article.find(params[:id]) 

if @article.update(article_params) 
redirect_to @article 
else 
    render 'edit' 
end 
end 
def destroy 
@article = Article.find(params[:id]) 
@article.destroy 

redirect_to articles_path 
end 
private 
    def article_params 
    params.require(:article).permit(:title, :text) 
end 

end 

這裏是我的形式

<%= form_for @article, :html => { :multipart => true } do |f| %> 
<% if @article.errors.any? %> 
<div id="error_explanation"> 
    <h2><%= pluralize(@article.errors.count, "error") %> prohibited this article from being saved:</h2> 
<ul> 
<% @article.errors.full_messages.each do |msg| %> 
    <li><%= msg %></li> 
<% end %> 
</ul> 
</div> 
<% end %> 
<p> 
<%= f.label :title %><br> 
<%= f.text_field :title %> 
</p> 

<p> 
<%= f.label :text %><br> 
<%= f.text_area :text %> 
</p> 
<p> 
<%= f.file_field :photo %> 
</p> 

<p> 
<%= f.submit %> 
</p> 
<% end %> 

我不能上傳照片INFACT它不顯示任何錯誤,但是沒有任何東西(圖像的路徑)保存在數據庫也沒有保存任何照片。我是新手,只是想創建一個具有上傳照片功能的表單。

class Article < ActiveRecord::Base 
validates :title, presence: true, length: { minimum: 5 } 
has_attached_file :photo 
validates_attachment :photo, content_type: { content_type: ["image/jpg", "image/jpeg", "image/png"] } 
end 

我已經試過幾乎所有的教程,並也發現了一些Similar Problem的,但似乎一切都沒有解決這個問題。請幫助我。

回答

1

您需要添加photo到你的堅強PARAMS:

def article_params 
    params.require(:article).permit(:title, :text, :photo) 
end 

沒有它的價值是不是經過對模型進行驗證和保存。

我假設你已經運行遷移增加回形針的photo_file_namephoto_file_sizephoto_content_typephoto_updated_at領域的articles表。

注意:只需在強參數中包含附件名稱photo;只要這個值達到模型回形針將處理其餘的。

此外,您需要禁用Paperclip的欺騙驗證。它使用OS file命令確定文件的MIME類型,但Windows沒有文件命令,因此總是失敗。你可以通過在初始化程序中加入類似這樣的東西來禁用欺騙檢查:

module Paperclip 
    class MediaTypeSpoofDetector 
    def spoofed? 
     false 
    end 
    end 
end 
+0

是的我早些時候嘗試過,但顯示錯誤,所以我刪除了它。錯誤在ArticlesController#update中顯示「Paperclip :: Errors :: MissingRequiredValidatorError」。我也提出過這個錯誤。在我的模型中添加了「validates_attachment:photo,content_type:{content_type:[」image/jpg「,」image/jpeg「,」image/png「]} 」。但我現在不知道該怎麼做。 – Pranav

+0

您是否在模型中的強參數**和** validates_attachment中使用了'photo'?你需要兩個;強大的參數將照片傳遞給模型,並驗證附件,因爲Paperclip堅持至少驗證內容類型或文件名。 –

+0

給我看。我以某種方式刪除了Paperclip錯誤,這真是一個愚蠢的錯誤。但現在,我正在上傳.jpg擴展圖像文件。它顯示文章頁面中的錯誤爲「照片的擴展名與其內容不匹配」。 – Pranav