2014-02-17 116 views
0

我有一個簡單的應用程序添加評論電影(使用TMDb API)。問題是,當我嘗試保存評論時,我在電影放映頁面上看不到它。這發生在我與其他應用程序 - 一些字段輸出沒有顯示在顯示頁面上。表格輸出不顯示

控制器

def show 
    @movie = Tmdb::Movie.detail(params[:id]) 
    ... 
    @movie_reviews = MovieReview.where(movie_id: params[:id]) 
end 

顯示

<% @movie_reviews.each do |movie_review| %> 
    <%= movie_review.title %> 
    <%= movie_review.content %>  
<% end %> 

形式

<%= form_for :movie_review, url: movie_movie_reviews_path(params[:movie_id]) do |f| %> 

<p> 
    <%= f.label :title %><br> 
    <%= f.text_field :title %> 
</p> 

<p> 
    <%= f.label :content %><br> 
    <%= f.text_area :content %> 
</p> 
<%= f.submit %> 
<% end %> 
+0

'<%= F。 text_area:cortent%>'錯字? – franksort

+0

是的,我改變了它,但它不能解決問題。 – Absurdim

+0

你的表單目標行爲是什麼? movie_movie_reviews_path(params [:movie_id])?以及呈現表單的動作? –

回答

1

我不知道你是怎麼保存的,但你應該有@電影= Movie.find(。 。)然後@ movie_review = @ movie.movi​​e_reviews.create(params)

這意味着您可能需要在表單中爲movie_id指定一個隱藏字段,或者在呈現表單之前指定它。

編輯: 你逝去的形式行動網址如下:

movie_movie_reviews_path(params[:movie_id]) 

發佈到審查索引路徑是create正確的行動,但你仍然需要告訴控制器你是什麼試圖說。所以,你應該做的:

movie_movie_reviews_path 

,然後在你的窗體中添加電影的ID爲該審查將是:

<%= form_for... 
<%= f.hidden_field :movie_id, :value => @movie.id %> 

所以,你現在有一個PARAM映射對於movie_review的movie_id(@movie來自控制器,還記得嗎?)

最後,在create行動:

無論
a)您許可:movie_ ID在你movie_review_params,什麼也不做更多

def movie_review_params 
    params.require(:movie_review).permit(:title, :content, :movie_id) 
end 

b)或你不碰你的movie_review_params和代替:

@movie_review = MovieReview.new(movie_review_params) 

@movie_review = Movie.find(params[:movie_id]).movie_reviews.new(movie_review_params) 
+0

我確實把hidden_​​field:movie_id,但它沒有幫助。另外,我定義了-movie和-movie_review。我正在使用一個API,所以我只是保存ID。 – Absurdim

+0

movie_movie_reviews_path(params [:movie_id]) –

+0

我的意思是,yhis param從哪裏來?這確實是正確的嗎? –