2013-03-02 58 views
0

我可以在我的視圖result.html.erb中訪問@result。 @result是一個Movie對象。我想通過表單爲這個@result對象創建註釋。我在result.html.erb中放置註釋框(表單)。Rails:使用表單將記錄添加到具有belongs_to關聯的模型

我是新來的形式的語法。我也對提交後將表單本身指向哪裏感到困惑。我是否需要創建一個新的控制器一起爲創建操作的意見?

我不知道如何使得它保存到@ result.comments.last

任何幫助,將不勝感激創造這種形式!發佈是我的模型和控制器。

class Movie < ActiveRecord::Base 
    attr_accessible :mpaa_rating, :poster, :runtime, :synopsis, :title, :year 

    has_many :comments 

end 


class Comment < ActiveRecord::Base 
    attr_accessible :critic, :date, :publication, :text, :url 

    belongs_to :movie 
end 


class PagesController < ApplicationController 

    def index 
    end 

    def search 
    session[:search] = params[:q].to_s 
    redirect_to result_path 
    end 

    def result 
    search_query = search_for_movie(session[:search]) 
    if !search_query.nil? && Movie.find_by_title(search_query[0].name).nil? 
     save_movie(search_query) 
     save_reviews(search_query) 
    end 
    @result ||= Movie.find_by_title(search_query[0].name) 
    end 
end 

result.html.erb

我以前的simple_form寶石,因爲我認爲這將是更好,但我覺得我的使用情況是足夠簡單,只需使用標準軌形成幫手。如果我錯了,請糾正我。這是我寫的,到目前爲止:

<%= simple_form_for @result do |f| %> 
    <%= f.input :text %> 
    <%= f.input :critic %> 
    <%= f.button :submit %> 
<% end %> 

我收到的錯誤:

undefined method `movie_path' for #<#<Class:0x000001013f4358>:0x00000102d83ad0> 

回答

0

我最終加入了#創建行動,頁面控制器和放置形式,我的看法是:

 <%= form_for @comment, :url => { :action => "create" } do |f| %> 
      <div class="field"> 
      <%= f.text_area :text, placeholder: "Compose new review..." %> 
       <%= hidden_field_tag 'critic', "#{current_user.name}" %> 
       <%= hidden_field_tag 'date', "#{Time.now.strftime("%m/%d/%Y")}" %> 
      </div> 
      <%= f.submit "Post", class: "btn btn-large btn-primary" %> 
     <% end %> 

在控制器頁控制器

def create 
    search_query = search_for_movie(session[:search]) 
    @movie = Movie.find_by_title(search_query[0].name) 
    @comment = @movie.comments.create(text: params[:comment][:text], critic: params[:critic], date: params[:date]) 
    if @comment.save 
     flash[:success] = "Review added!" 
     redirect_to result_path 
    else 
     redirect_to result_path 
    end 
    end 
相關問題