Rails 4:如何使用select_tag以便自动重建模型和关联

用户名

我有一个名为Parent的模型,它看起来像这样(为了保护无辜者而替换了实际名称):

class Parent < ActiveRecord::Base
  has_many :children
end

...以及一个名为Child的模型,看起来像这样:

class Child < ActiveRecord::Base
  belongs_to :parent
end

在用于渲染Child模型实例的_form.html.erb中,我尝试为用户提供一个选择列表,以选择他们希望为其创建新Child的Parent。(要点:这样做违反了某些REST原理吗?我曾考虑过在页面上交替添加一个“创建新子代”链接,该链接始终传递一个特定的父ID,但是不确定我不会遇到相同的问题)

因此,我已经渲染了选择列表,并在ChildController的Ne​​w()方法中创建了一个@allparents数组:

<%= select_tag "parent_id", options_from_collection_for_select(@allparents, 'id', 'name') %>

但是,除了必须在select_tag声明中手动拼写“ parent_id”属性名称之外,我还必须像下面这样在ChildController的Create方法中从我的params数组中挑选出父_id:

def create   @child = Child.new(child_params)   
    @child.parent_id = params[:parent_id]
    # save it 
end

尽管此方法有效,但我感觉要手动将子项与其child.parent_id属性相关联时,我不得不写一些“胶水”,但我觉得必须有更好的方法,但是我无法找出合适的Google Fu自己解决这个问题。

最后一个想法:对我来说,我缺少的最大指示是,当我触发一个强烈的参数错误时,我看到正在为我构造我的子模型对象,但是parent_id是一个完全独立的实体:

参数:

{"utf8"=>"√",
 "authenticity_token"=>"asdefkaheaikehualshalhf",
 "parent_id"=>"2",
 "child"=>{"versionnumber"=>"some user input value"},
 "commit"=>"Create Child"}

似乎我的解决方案很脆弱,因此,如果有人更改了Child的parent_id属性名,则我的视图将中断。有谁看到更好的方法来解决这个问题?谢谢你。

诗人

我建议您看一下一些其他在线资源,例如railscast或rails guides,以获得有关如何在rails中使用表单的良好概述。

通常,使用form_for @model do模式是个好主意

它会创建一个表单帮助器,您可以在其中轻松映射模型字段和表单名称。

因此,在您的情况下,它看起来像这样:

= form_for @child do |f|
  = f.collection_select(:parent, Parent.all, :id, :name, :prompt => "Select a Parent")
  = f.submit

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails 4如何通过select_tag保存

来自分类Dev

rails select_tag,如何使用数组中的json值和自定义文本生成下拉列表

来自分类Dev

Rails 4-使用带有select_tag的可标记宝石,从集合中选择标记

来自分类Dev

如何从rails select_tag获得回调响应?

来自分类Dev

Ruby on Rails:select_tag如何根据所选值显示

来自分类Dev

如何从rails select_tag获得回调响应?

来自分类Dev

使用Rails select_tag传递多个值

来自分类Dev

Rails-使用JavaScript禁用select_tag

来自分类Dev

与select_tag一起使用rails

来自分类Dev

Rails-使用JavaScript禁用select_tag

来自分类Dev

如何使用 Ransack gem 在 Rails 的 select_tag 中使用 *_in 谓词?

来自分类Dev

如何在 ruby on rails 中使用 select_tag 返回多个参数

来自分类Dev

Rails嵌套的关联(通过模型进行建模)

来自分类Dev

rails select_tag已选择无效

来自分类Dev

Rails:远程:从select_tag为true

来自分类Dev

Rails 上的 select_tag 中的 ArgumentError

来自分类Dev

Rails:如何从sql文件自动创建模型

来自分类Dev

每天使用Rails自动创建模型实例

来自分类Dev

如何在Ruby on Rails应用程序中编辑和管理“ select_tag options_from_collection_for_select”?

来自分类Dev

Rails 4 - Select tag from collection using Acts as Taggable gem with select_tag

来自分类Dev

如何使用MySQL在Rails的Rails中创建自动关联

来自分类Dev

如何测试Rails模型关联

来自分类Dev

使用Rails创建关联的模型

来自分类Dev

不带form_tag的rails select_tag

来自分类Dev

Rails 4中的关联模型和simple_form

来自分类Dev

使用ajax和rails删除和更新关联模型的对象

来自分类Dev

Rails Select_tag / Select_year选择整数/年

来自分类Dev

Rails,select_tag:需要在参数中返回ID和字符串

来自分类Dev

Ruby on Rails模型关联

Related 相关文章

  1. 1

    Rails 4如何通过select_tag保存

  2. 2

    rails select_tag,如何使用数组中的json值和自定义文本生成下拉列表

  3. 3

    Rails 4-使用带有select_tag的可标记宝石,从集合中选择标记

  4. 4

    如何从rails select_tag获得回调响应?

  5. 5

    Ruby on Rails:select_tag如何根据所选值显示

  6. 6

    如何从rails select_tag获得回调响应?

  7. 7

    使用Rails select_tag传递多个值

  8. 8

    Rails-使用JavaScript禁用select_tag

  9. 9

    与select_tag一起使用rails

  10. 10

    Rails-使用JavaScript禁用select_tag

  11. 11

    如何使用 Ransack gem 在 Rails 的 select_tag 中使用 *_in 谓词?

  12. 12

    如何在 ruby on rails 中使用 select_tag 返回多个参数

  13. 13

    Rails嵌套的关联(通过模型进行建模)

  14. 14

    rails select_tag已选择无效

  15. 15

    Rails:远程:从select_tag为true

  16. 16

    Rails 上的 select_tag 中的 ArgumentError

  17. 17

    Rails:如何从sql文件自动创建模型

  18. 18

    每天使用Rails自动创建模型实例

  19. 19

    如何在Ruby on Rails应用程序中编辑和管理“ select_tag options_from_collection_for_select”?

  20. 20

    Rails 4 - Select tag from collection using Acts as Taggable gem with select_tag

  21. 21

    如何使用MySQL在Rails的Rails中创建自动关联

  22. 22

    如何测试Rails模型关联

  23. 23

    使用Rails创建关联的模型

  24. 24

    不带form_tag的rails select_tag

  25. 25

    Rails 4中的关联模型和simple_form

  26. 26

    使用ajax和rails删除和更新关联模型的对象

  27. 27

    Rails Select_tag / Select_year选择整数/年

  28. 28

    Rails,select_tag:需要在参数中返回ID和字符串

  29. 29

    Ruby on Rails模型关联

热门标签

归档