尝试保存在我的控制器中时出现“对象预期但有字符串”错误

时间:2016-11-16 22:51:15

标签: ruby-on-rails ruby-on-rails-5 params belongs-to

我正在使用Rails 5.我有这个模型

class ConfidentialMemo < ApplicationRecord
  belongs_to :scenario
  belongs_to :scenario_role
end

在我看来,我设置了这个下拉菜单,用于选择要填入“scneairo_role”字段的字段......

<%= f.collection_select :scenario_role, @scenario.roles, :id, :name, include_blank: false %>

在我的控制器的create方法中,我有这个

@confidential_memo = ConfidentialMemo.new(confidential_memo_params)
…

  private

    def confidential_memo_params
      params.require(:confidential_memo).permit(:description, :scenario_id, :scenario_role)
    end

但是我收到了错误

ScenarioRole(#70207639353420) expected, got String(#70207645188180)

这个错误是什么意思,更重要的是,我需要调整什么才能成功保存我的模型?

1 个答案:

答案 0 :(得分:0)

在collection_select方法和控制器参数方法中将:scenario_role更改为:scenario_role_id。您的表单正在输出并发送一个ID(以字符串的形式),但如果您只是尝试将ID分配给@note.scenario_role,则它会以相同类型的消息失败。