2015-06-21 83 views
0

所以我試圖創建一個視頻遊戲審查網站的實踐。每個遊戲都有它自己的頁面,並且在每個頁面上,我希望有一個表單可供您輸入評論,並在提交時將其顯示在同一頁面上。呈現表單,並在同一頁面上顯示輸入

我不知道該如何處理。但我設法創建了兩個控制器 - 一個用於創建遊戲,另一個用於創建評論。

我使用的設計進行用戶登錄/註冊

我會後下面的代碼:請讓我知道如果你需要看其他文件。

的routes.rb

Rails.application.routes.draw do 

    devise_for :users 

    resources :games 
    resources :reviews 

    root "games#index" 

end 

games_controller.rb - 創建新遊戲

class GamesController < ApplicationController 

    before_action :set_game, only: [:show, :edit, :update, :destroy] 

    def index 
     @games = Game.all 
    end 

    def new 
     @game = Game.new 
    end 

    def create 
     @game = Game.create(game_params) 
     redirect_to @game 
    end 

    def edit 
    end 

    def update 
     @game.update(game_params) 
     redirect_to @game 
    end 

    def destroy 
    end 

    private 

    def game_params 
     params.require(:game).permit(:title, :image, :developer, :genre, :release_date, :platform) 
    end 

    def set_game 
     @game = Game.find(params[:id]) 
    end 

end 

reviews_controller.rb - 創造評論

class ReviewsController < ApplicationController 

    before_action :set_review, only: [:show, :edit, :update, :destroy] 

    def index 
    end 

    def show 
    end 

    def new 
     @review = Review.new 
    end 

    def create 
     @review = Review.create(review_params) 
     redirect_to @review 
    end 

    private 

    def review_params 
     params.require(:review).permit(:review) 
    end 

    def set_review 
     @review = Review.find(params[:id]) 
    end 

end 

show.html.erb遊戲

<% if user_signed_in? %> 
    <p class=""><%= link_to "Update Details", edit_game_path %></p> 
    <p class=""><%= link_to "Update News", new_game_path %></p> 
<% end %> 

<%= flash[:notice] = "Successfully updated." %> 
<hr> 
<div class="game_summary"> 
    <%= image_tag @game.image %> 
    <div class="game_details"> 
     <h3 class="game_title"><%= @game.title %></h3> 
     <ul class="game_info"> 
      <li>Developer: <%= @game.developer %></li> 
      <li>Release Date: <%= @game.release_date %></li> 
      <li>Genre: <%= @game.genre %></li> 
      <li>Platform(s): <%= @game.platform %></li> 
     </ul> 
     <button class="buttons" id="buy">Buy</button> 
     <button class="buttons" id="rent">Rent</button> 
    </div> 
</div> 

<div class="game_news"> 
    <h2 class="game_news_title">News & Articles</h2> 
</div> 

<div class="game_reviews"> 
    <%= link_to "Add Review", new_review_path %>  
    <h2>Reviews</h2> 
    <ul> 
     <li><%= %></li> 
     <li><%= %></li> 
     <li><%= %></li> 
     <li><%= %></li> 
    </ul> 
</div> 
+0

有什麼問題? –

+0

另外 - 你有沒有讀過Rails指南:http://guides.rubyonrails.org/getting_started.html –

回答

0

在你games_controller.rb,你需要一個show方法(默認情況下,當你使用腳手架創建的,但你種種原因錯過了)。假設您的Review模型參考了其相應的Game模型(這兩個模型均爲schema.rb中指定的外鍵以及各自模型中的belongs_tohas_many),則此show方法將收集與所討論的遊戲有關的所有評論。

show方法是這樣的:

def show 
    @reviews = Review.where("game_id = ?", @game.id) 
end 

那麼在你看來,你有這樣的事情:

<% @reviews.each do | review | %> 
    <%= review.title %> 
    <%= review.content %> 
<% end %> 

我不知道哪些字段包含在你的評論對象,但是你可以從這個例子中推斷出你想要的東西。