我只是想打印已输入表单的参数。 基本上我创建了一个新的赌注然后我显示参数:
迁移
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 %>
我试图使这个代码与实例变量一起工作,但它也不起作用。问题在哪里?
谢谢。
答案 0 :(得分: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
操作,那会更好。
答案 1 :(得分:0)
正如克莱指出的那样,对我来说,似乎你变空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"}