0

다음은 내 컨트롤러 코드와보기 코드입니다. 보기는 게임 목록을 표시하고 동일한보기에서 기존 테이블에 게임을 추가하고 싶습니다. 게시물 진행에 문제가 있습니다. 어떤 제안을하거나 누군가 내가 잘못하고있는 것을 지적 할 수 있습니까?레일에서 POST는 어떻게합니까?

class GamesController < ApplicationController 

    # GET /games 
    def index 
    @games = [] 
    client = Games::Client.new 
    @games =client.get_games 
    if @games.blank? 
     render_404 
    end 
    if params[:name] 
     client.create_games params[:name] 
    end 
    end 
end 


%nav.navigation-bar.clearfix{:role => "navigation"} 
    %h3.reader-details Game tools 
    %a.home{:href => root_path, :role => "link", :title => "Home"}Home 
%body 
    %section.form 
    %form.standard{:action => "/games", :method => "post"} 
     %input{type: 'text', name: 'name', class: 'text'} 
     %input.primary-action{type: 'submit', value: 'Add', class: 'button'} 
    .content 
    - if @games.present? 
     %table.games 
     %thead 
      %tr 
      %th type 
      %th id    
     %tbody 
      - @games.each do |game| 
      %tr 
       %td= game['type'] 
       %td= game['id'] 

     %a= link_to "Back", root_path   

답변

0

create 동작을 정의하지 않았습니다. 리소스에 대한 RESTful 경로를 만들 때 /games에 대한 POST는 index 작업을 찾지 않으므로 create 작업을 찾습니다.

자원을 스캐 폴딩하면 Rails가 원하는 것을 알 수 있습니다.

rails g scaffold game name:string

이것은 당신의 편안하고 경로를 생성하고 그것을 그들에게 해당 컨트롤러에서 작업을 생성합니다. 참고로 스캐 폴드를 시도하기 전에 갖고있는 것을 스크랩하거나 스캐 폴드가 필요한 모든 것을 생성하지 않을 수도 있습니다. 이후에 다시 붙여 넣으려면 임시 파일에보기 코드를 저장하십시오. 여기

나는 그것에 대해 더 많거나 적은 갈 것 방법은 다음과 같습니다

# View 
= form_for Game.new do |f| 
    = f.text_field :name 
    = f.submit 'Add' 

# Controller 
    def create 
    if Game.create(params[:game]) 
     redirect_to :action => 'index' 
    else 
     flash[:notice] = "There was a problem creating your new game" 
     render :action => 'index' 
    end 
    end 

# Routes 
    resources :games