2015-08-19 113 views
0

我正在創建博客帖子版本控制系統。 (我試過Paper_trail和Draftsman,他們沒有我需要的東西)。當用戶編輯「實時」頁面時,我的應用程序會使用新信息製作PostVersion表格條目,並將其稱爲「掛起」,而不是更改實時版本。但是,如果用戶編輯「草稿」頁面,則不會創建「掛起」PostVersion,它只是直接編輯頁面。

從Rails中的特定字段中提取信息4表格

我似乎無法得到窗體參數從窗體傳遞到PostVersion.create!方法。它只是在我試圖從表單值中提取時提交nil值。

posts_controller.rb

def update 
    @post = Post.find(params[:id]) 
    if @post.status == 'draft' 
    #this not important 
    end 
    if @post.status == 'live' 
    @pending_post = PostVersion.create!(title: params[:title], status: 'pending', body: params[:body], post_id: @post.id) 
    end 
end 

_form.html.slim

= simple_form_for [:admin, @post ], multipart: true do |f| 
    = f.error_notification 
    = f.input :title, label: 'Title', required: true, focus: true 
    #rest of the form redacted 
+0

敢肯定你的形式params爲內部嵌套的「後」,你可以隨時檢查它的服務器日誌,如果是這樣的話,那麼你應該把它作爲params [:post] [:title],等等。 –

回答

0

實際PARAMS可以在各種各樣的 「後」 陣列被嵌套,如post[title]。你可能希望定義,像這樣一個特定的PARAMS方法:

def update 
    @post = Post.find(params[:id]) 
    if @post.status == 'draft' 
    #this not important 
    end 
    if @post.status == 'live' 
    @pending_post = PostVersion.create!(title: post_params[:title], status: 'pending', body: post_params[:body], post_id: @post.id) 
    end 
end 

private 

def post_params 
    params.require(:post).permit :title, :body 
end 
+0

我得到這個錯誤「有一個錯誤:未定義的局部變量或方法'post_params'可能是因爲我試圖創建一個PostVersion使用來自用於編輯一個帖子的窗體中的信息(我確實有強大的參數設置) ...我嘗試使用post_version_params,但也不起作用。 – NothingToSeeHere

+0

您可以編輯問題以包含您正在使用的強參數方法嗎? –