2010-04-11 48 views
0

我只是試圖打印已經輸入到我的表單中的參數。 基本上我創建一個新的賭注,然後我顯示參數:是可用於所有控制器視圖的控制器操作中的實例變量?

MIGRATION

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 

VIEWS 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。如果你使用<br>這是更好地使用<br/>

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

create動作,你應該有一行:

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

,並考慮。您的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"} 
相關問題