Heroku记录了一个fixnum而不是一个字符串

时间:2018-03-04 13:34:50

标签: ruby ruby-on-rails-4 heroku ruby-on-rails-5

在本地,它按预期记录字符串,在Heroku上记录一个fixnum ...

用户可以创建愿望并选择他想要观看音乐会的区域。如果音乐会符合他的意愿,则收到电子邮件。

我的application_helper.rb中有一个哈希值作为常量

  DEPARTMENTS = {
    "01" => "Ain",
    "02" => "Aisne",
    "03" => "Allier"
    #........
}

wanted_concerts_controller.rb中的我的创建方法如下所示

def create
    @wanted_concert = WantedConcert.new(wanted_concerts_params)
    @wanted_concert.user_id = current_user.id
    if @wanted_concert.save!
      redirect_to wanted_concerts_path, notice: "Ton souhait est bien enregistré"
    else
      render :new , alert: "Oups recommence!"
    end
  end

private 

  def wanted_concerts_params
    params.require(:wanted_concert).permit(:department, :user_id)
  end

the new.html.erb档案中,我可以实现我的愿望

<%= simple_form_for(@wanted_concert) do |f| %>
    <%= f.input :department, prompt: "Choisi une région", label: false, collection: ApplicationHelper::DEPARTMENTS.map { |k, v| v } %>
    <%= f.submit "Valider", class: "btn btn-success" %>
<% end %>

这是显示愿望的index.html.erb      &lt;%@ wanted_concerts.each do | wanted | %GT;

    <li> <%= wanted.department %> <%= link_to "Supprimer", wanted_concert_path(wanted), method: :delete %></li>
  <% end %>

如果我选择例如 Ain ,那么就在本地 索引显示 Ain

如果选择 Ain ,则在Heroku上 它显示 0

所以在Heroku控制台上我做了:

irb(main):004:0> c = WantedConcert.last
D, [2018-03-04T13:31:54.314672 #4] DEBUG -- :   WantedConcert Load (1.3ms)  SELECT  "wanted_concerts".* FROM "wanted_concerts" ORDER BY "wanted_concerts"."id" DESC LIMIT $1  [["LIMIT", 1]]
=> #<WantedConcert id: 21, department: 0, user_id: 1, created_at: "2018-03-04 13:02:16", updated_at: "2018-03-04 13:02:16">
irb(main):005:0> c.department.class
=> Integer
irb(main):006:0>

1 个答案:

答案 0 :(得分:0)

我找到了帮助。 我犯了一个顽皮的错误,我在一个旧的迁移中重命名了一个字段而不是在一个新的.... 所以这可能有助于某人面临一个熟悉的错误......