2014-03-31 130 views
1

我在遵循rails教程時遇到了錯誤。經過一番研究,將@post = Post.new(params[:post])更改爲@post = Post.new(post_params)解決了我的問題,雖然我還是不太明白原因。是什麼造成了差異?爲什麼我可以在show中使用params[:id]ActiveModel :: ForbiddenAttributesError與Rails 4

我posts_controller.rb:

class PostsController < ApplicationController 
    def new 
    end 

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

    def show 
    @post = Post.find(params[:id]) 
    end 

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

查看本教程。你得到了答案:http://guides.rubyonrails.org/action_controller_overview.html#strong-parameters – Emu

+2

檢查[欄4:強參數](http://weblog.rubyonrails.org/2012/3/21/strong-參數/).. –

+1

檢查http://ruby.railstutorial.org/chapters/sign-up#sec-strong_parameters – Monideep

回答

0

答案很簡單,當您嘗試創建或編輯記錄的強參數系統應用。因此,即使使用不允許的參數,在show動作中的簡單SELECT/find也可以正常工作。 但是,您必須在每個INSERT或UPDATE操作中明確允許控制器中的參數。這就是你用params.require(:post).permit(:title, :text)所做的。您曾經說過,如果存在後置標題和標題參數,則允許使用該標題和文本參數。

相關問題