2016-03-24 18 views
2

私は自分のビューの1つにフォームヘルパーを使用しています。ユーザがオプションのリストから選択してもらいたいです。私はその後、選択したオプションのIDをデータベースに保存します。しかし、オプションを選択するたびに、そのIDは格納されず、データベースはこの属性に対してnilと表示します。例えばRuby on Railsのフォームヘルパー

<%= f.label :"Team Against" %><br> 
<%= f.select :opposing_team, options_for_select([['Team 1', 1], ['Team 2', 2], ['Team 3', 3]]) %><br> 

、私は「opposing_team」と呼ばれる私のテーブルの列を持っているし、チーム1がユーザによって選択されたとき、私はopposing_teamは現在、私は、オプションの範囲を選択することができます値1で更新することにしたいですこの形式では、opposing_team値は常にnilです。

編集:

def create 
    @league = League.find(params[:league_id]) 
    @team = @league.teams.find(params[:team_id]) 
    @fixture = @team.fixtures.create(fixture_params) 
    if @fixture.save 
     redirect_to league_team_path(:league_id => @league.id, :id => @team.id) 
    else 
     render 'new' 
    end 

end 
def new 
    @team = Team.find(params[:team_id]) 
    @fixture = Fixture.new 
end 

これは器具コントローラがから成るものです。 opposing_teamは、データベース内の整数値です。

+0

コントローラを表示 –

+0

フィールド「opposing_team」のデータタイプは何ですか? – Pavan

+0

あなたが助けることができるように、より良いエラーログを配置してください。 – titan

答えて

1

これはよくある質問です。答えはstrong_parametersには必須のキーがありません。その場合は、キーのリストに:opposing_teamを追加し、

def fixture_params 
    params.require(:fixture).permit(:value, :other_value) 
end 

:あなたのコントローラで はあなたのようになります最後にメソッドを持っています。

def fixture_params 
    params.require(:fixture).permit(:value, :other_value, :opposing_team) 
end 
+0

これは、別のフィールドとしてopposing_teamを別に追加し、fixture_paramsに追加するのを忘れてしまったことです。これは、うまくいった! – kjs123

+0

心配しないで、あなたの質問を閉じる答えを受け入れることを忘れないでください。 – Matt