ruby-on-rails - 没有nested_form的has_one关系

标签 ruby-on-rails simple-form has-one

我正在尝试通过基本表单实现 has_one 关系,但完全陷入困境。

我似乎在 Controller 和表单中尝试了大量的组合,但似乎没有取得任何进展。

我有一个电话号码,我使用由 API 填充的外部服务。

最终,我希望为此设置所有此类电话号码,但现在我很高兴只使用一个。

parent.rb

has_one :clever_phone

还有手机型号

clever_phone.rb

attr_accessible :number, :parent_id, :prefix, :country_iso
belongs_to :parent

Controller

clever_phones_controller

def new
@parent = Parent.find(params[:parent_id])
@clever_phone = @parent.build_clever_phone


def create

@parent = Parent.find(params[:parent_id]
@clever_phone = Parent.create_clever_phone(params[:clever_phone])

查看 我真的不想在这里从父级做一个嵌套表单,因为我有一些复杂的代码,这些代码通过一个 api 生成创建过程中使用的信息,我认为正确的是,位于 smart_phones_controller 中。

@simple_form_for @clever_phone do |f|

= f.input :country_iso, as: :country, :iso_codes => true, priority: ["gb"]
= f.input :prefix

= f.submit

路线

 resources :parent do
   resource :clever_phone
 end

我的问题是 @parent 的参数似乎没有传递给 Controller ​​中的 create 方法,因此我得到了 “没有身份证就找不到家长” 错误

如果我尝试将其作为嵌套形式 我明白了 NoMethodError 未定义方法“parent_clever_phones_path” 事实上我没有使用过它,只使用了parent_clever_phone_path(注意没有复数)。

我确信这应该非常简单,但我已经盯着它看了几个小时了,我已经束手无策了......

有什么想法吗?

最佳答案

好吧,有几个问题需要您解决:

--

变量

@parent 参数未被传递的原因是您没有将它们包含在表单中。这就是嵌套表单非常方便的地方 - 在一次调用中传递您的 parent 参数和 clever_phone 参数

既然您不想这样做,我建议至少使用 clever_phone 所在的 parent_id 填充隐藏字段关联于:

#app/views/clever_phones/new.html.erb
= simple_form_for @clever_phone do |f|

= f.input :parent_id, as: :hidden, value: params[:parent_id]
= f.input :country_iso, as: :country, :iso_codes => true, priority: ["gb"]
= f.input :prefix
= f.submit

--

路线

或者,您必须确保能够为表单创建正确的路由(因为我认为 @parent = Parent.find params[:parent_id] 没有被调用您的创建方法:

#app/views/clever_phones/new.html.erb
= simple_form_for [@parent, @clever_phone] do |f|

这将使您能够将 create 操作指向路线的嵌套版本;因此为您提供 parent_id 参数

--

写完后,我认为这并不能解决您问题的核心。如果您需要更多信息,请发表评论,我将很乐意创建更合适的答案!

关于ruby-on-rails - 没有nested_form的has_one关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25380743/

相关文章:

ruby-on-rails - RoR : has_one "or the other"?(或者,没有继承的多态性。)

mysql - Rails 4 从 has_one 关联访问表属性

ruby-on-rails - 将haml代码保存在一个变量中,然后使用它

ruby-on-rails - rspec 测试结果 Capybara::ElementNotFound

javascript - 如何在 Rails simple_form 中实现 Jasny 的引导文件上传样式扩展?

ruby-on-rails - 将 f.collection_check_boxes 的复选框与 Simple_Form 对齐

ruby-on-rails - simple_form 集合标签

ruby-on-rails - 预期模型(#...),使用选择标记时出现字符串(#...)错误

ruby-on-rails - 无法验证(检查) Paypal 账户

ruby-on-rails - wicked_pdf 图像渲染