2010-04-11 2 views
0

Я просто пытаюсь напечатать параметры, которые были введены в мою форму. В основном я создаю новую ставку, то отобразить параметры:- переменная экземпляра в действии контроллера, доступного для просмотра всех контроллеров?

МИГРАЦИИ

class CreateBets < ActiveRecord::Migration 

def self.up 
    create_table :bets do |t| 
    t.integer :accepted ,:default => 0 
    t.integer :user_1_id #proposer 
    t.integer :user_2_id #receiver 
    t.integer :team_1_id #proposer's team 
    t.integer :team_2_id #receiver's team 
    t.integer :game_id 
    t.integer :winner 
    t.integer :amount 
    t.timestamps 
    end 
end 

    def self.down 
    drop_table :bets 
    end 
end 

CONTROLLER

bets_controller.erb

class BetsController < ApplicationController 

    def index 
    redirect_to new_bet_path 
    end 

    def new 
    @b=Bet.new 
    end 

    def create 
    @points=params[:points] 
    @winner=params[:winner] 
    end 

end 

МНЕНИЯ New.erb

<% facebook_form_for Bet.new do |f| %> 
    <%= f.text_field :amount, :label=>"points" %> 
    <%= f.text_field :winner, :label=>"WinningTeam" %> 
    <%= f.buttons "Bet" %> 
<% end %> 

create.erb

points:<%= @points %> 
<br> 
winner:<%= @winner %> 

Я попытался сделать этот код работать с переменными экземпляра, но это не сработало. В чем проблема?
Спасибо.

ответ

1

Я думаю, что params[:winner] и params[:point] пустой хэш. Попробуйте добавить это к вашему create.erb:

params: <%= params.inspect %> 

Он будет отображать params хэш, так что вы будете видеть, как добраться до него.

Еще один намек, почему вы создаете новый объект в действии new, а затем в форме вы делаете это снова? Итак:

<% facebook_form_for @b do |f| %> 

И еще одна вещь, это действительно хорошо держать именовании, поэтому не создают @b объект, но @bet.

В create действия вы должны иметь строку:

@bet = Bet.new(params[:bet]) 

И в виду:

<p> 
    points:<%= @bet.points %> 
</p> 
<p> 
    winner:<%= @bet.winner %> 
</p> 

Если вы используете <br>, лучше использовать <br/>.

Ваше index действие полностью бесполезно. Было бы лучше, если бы вы переместили все поведение с new на index и удалили new действие полностью.

0

Как указал klew, для меня кажется, что вы становитесь пустым params[:winner] и params[:point]. Вы можете убедиться в том, что вы получаете, взглянув на журнал своих серверов.

Вы увидите строку

Processing BetsController#create (for 127.0.0.1 at 2010-04-11 20:56:51) [POST] 
Parameters: {"your"=>"parameters", "should"=>"apper in this hash"}