2016-10-31 71 views
0

簡單的形式,我有2種型號,博客和帖子爲PARAMS

resources :blogs do 
    resources :posts 
    end 

所以,我也有關聯。一個博客可以有很多帖子。所以,我把鏈接到新的崗位在博客索引:

= link_to 'New Post', new_blog_post_path(@blog) 

然後它會將您重定向到新的崗位,這使得這樣的形式:

= simple_form_for(@post) do |f| 
    = f.error_notification 

    .form-inputs 
    = f.input :title 
    = f.input :content 

    .form-actions 
    = f.button :submit 

而且我得到一個錯誤:

undefined method `posts_path'

我認爲簡單的表單需要blog_id但我找不到它。我試圖把@ blog.id設置爲簡單的表單,但無論如何,我得到一個錯誤(ID爲零級) 我該如何解決我的問題?

+0

沒有'posts_path'這樣的東西。輸入'rake routes',你會發現你要找的路線可能是'blog_posts_path'。該路線將引導您進入帖子的索引頁面。 – Mark

+0

是的問題是我怎樣才能發送正確的路線從我的表單? –

回答

1

我從來沒有使用過simple_form_for,但它在我看來就像你的資源有分配的關聯。因此,您需要將其包含在表單定義中:

= simple_form_for([@blog, @post]) do |f| 
= f.error_notification 

.form-inputs 
    = f.input :title 
    = f.input :content 

.form-actions 
    = f.button :submit 

顯然,您需要在控制器操作中使用@blog。

鏈接到form_for文檔: http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for

編輯:

不知道從哪裏posts_path是來自於你的代碼,但很明顯,這條路並不存在,因爲所有post路徑依賴blog小號。

有什麼地方可以在代碼中引用post_path

+0

同樣的錯誤:未定義的方法'posts_path' –

+0

請參閱編輯。該表單將生成一個'posts_path'作爲表單的URL,您嘗試在'simple_form_for'中放置[@blog,@post]?這應該會產生正確的路線,類似於'blog /:blog_id/posts' –

+0

是的,你是對的,但是我不知道如何正確寫一個表格 –