2016-03-15 53 views
0

我最近在数据库中添加了一个名为“sport”的表中的新列。我试图在表单中使用select_tag更新列中的值,但是每次尝试数据都没有更新。表单的其余部分目前正在正常工作和更新。表单不使用选择标记更新数据库红宝石

选择标记目前在我的视图中像这样实现。

<%= f.label :sport %> 
<%= select_tag(:sport, options_for_select([['Basketball', 1], ['NRL', 2], ['Super Rugby', 3], ['AFL', 4], ['eSports', 5], ['Ice Hockey', 6], ['Horse Racing', 7], ['Tennis', 8], ['NFL', 9] ]))%> 

:运动被声明为在表中一个整数。

控制器目前看起来是这样的:

class BetsController < ApplicationController 

    def new 
    @bet = Bet.new 
    end 

    def create 
    @bets = Bet.new(bet_params) 

    if @bets.save 
     flash[:success] = 'Bet Successfull Logged.' 
     redirect_to new_bet_path 
     else 
     flash[:danger] = 'Error, Bet has not been logged. Try again mate.' 
     redirect_to new_bet_path 
     end 
    end 

    def show 
    @bet = Bet.find(params[:id]) 
    end 

    def edit 
    @bet = Bet.find(params[:id]) 
    end 

    def update 
    @bet = Bet.find(params[:id]) 

     if @bet.update_attributes(bet_params) 
      flash[:success] = "Bet Updated!" 
      redirect_to bet_path(params[:id]) 
     else 
      render action: :edit 
     end 
    end 

    private 

    def bet_params 
     params.require(:bet).permit(:bet_placed, :game, :units_placed, :odds, :profit_or_loss, :date_of_bet, :resolved, :push, :sport, :bookmaker) 
    end 

end 
+0

当您提交表单时:哪些参数提交给控制器。新列是什么类型? –

+0

新列的类型是整数。 整个表格是针对下注行的submmited。 –

回答

2

如果您检查您的PARAMS我敢打赌哈希你会发现信息不存在。
尝试使用select form_for帮手,而不是select_tag帮手。相反,您的代码可能如下所示:

<%= f.select(:title, collection: [['Basketball', 1], ['NRL', 2], ['Super Rugby', 3], ['AFL', 4], ['eSports', 5], ['Ice Hockey', 6], ['Horse Racing', 7], ['Tennis', 8], ['NFL', 9] ])%>