在Rails中,我收到一个错误“模型(# - 12345)预期,得到字符串(# - 12345)”

时间:2015-06-04 17:25:39

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

我意识到这有一个问题,但所提供的答案都没有对我有用。特别麻烦的是,我可以告诉我将正确的参数传递给create方法(或更新,但我现在尝试使用create)。从Rails 4内置服务器提供的调试/错误页面:

"url"=>"",
"country"=>"1",
"charge"=>"0",

我的模型已配置为模型belongs_to国家和国家has_many模型。我不明白为什么,如果我传入格式正确的数据,并且我正在访问Country模型(我的下拉列表通过下面的代码填充了相应的名称),它不起作用。任何帮助深表感谢。我很难过,谷歌的帮助很小。

<%= f.select :country, Country.all.collect { |c| [c.id, c.id.to_i] }, class: 'form-control' %>

另请注意,我尝试了很多变体,包括但不限于:

<%= f.select :country, Country.all.collect { |c| [c.country_long_name, c.id] }, class: 'form-control' %>
<%= f.select :country, Country.all.collect { |c| [c.id, c.id] }, class: 'form-control' %>
<%= f.collection_select :country, Country.all.collect, c.country_long_name, c.id %>

2 个答案:

答案 0 :(得分:0)

你所有的答案都错了。这样做:

<%= f.collection_select :country_id, Country.all, c.id, c.country_long_name, :prompt => true %>

另外,允许控制器内的country_id为 params.permit(:COUNTRY_ID)

阅读collection_select以了解更多信息。

答案 1 :(得分:0)

任何偶然发现此事的人:

我至少有几个问题。

首先,我没有使用集合选择(应该与下拉表格组,BTW一起使用)。这实际上是在我链接到的其他相关问题中提到的。

其次,我的代码已将binding.pry粘贴到它上面作为故障排除工具。它是一个调试工具,允许您通过中断代码执行来逐步执行代码,检查变量等(很像大多数IDE中的断点)。但是,由于未知原因,添加binding.pry会破坏我的代码。我会将params.require(:blah).permit(:foo,:bar)的结果传递给Burp.new()方法。 Burp.new(params.req ......)令人窒息。也就是说,我会运行Burp.new(params.req ...),它会吐出一个对象,所有值都设置为nil。 :'(我不知道为什么会这样做,但只要我注释掉我的binding.pry代码,一切正常。:/

如果你找到了这个页面并且像我一样被卡住了,我希望有帮助!