【问题标题】:is an instance variable in an action of a controller available for all the controllers view?控制器操作中的实例变量是否可用于所有控制器视图?
【发布时间】:2010-04-11 14:17:34
【问题描述】:

我只是想打印已输入表单的参数。 基本上我创建一个新赌注,然后显示参数:

迁移

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

控制器

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

视图 新.erb

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

创建.erb

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

我试图让这段代码与实例变量一起工作,但它也不起作用。问题出在哪里?
谢谢。

【问题讨论】:

    标签: ruby-on-rails rails-activerecord


    【解决方案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>
    

    如果您使用&lt;br&gt;,最好使用&lt;br/&gt;。

    您的index 操作完全没用。如果您将所有行为从new 操作移至index 并完全删除new 操作,那就更好了。

    【讨论】:

      【解决方案2】:

      正如 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"}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-21
        • 2015-06-25
        • 1970-01-01
        相关资源
        最近更新 更多