2015-06-21 65 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 %> 

我不知道哪些字段包含在你的评论对象,但是你可以从这个例子中推断出你想要的东西。

相关问题