Ruby on rails 如何使用Rails、Simple_Form和Cocoon创建部分预填充表单?

Ruby on rails 如何使用Rails、Simple_Form和Cocoon创建部分预填充表单?,ruby-on-rails,simple-form,cocoon-gem,Ruby On Rails,Simple Form,Cocoon Gem,我有一个表格来收集用户的简历信息。在这本书中,我需要收集他们说什么语言,以及他们对每种语言的熟练程度。我想有3种语言是必需的,已经在表单上,并有允许用户添加其他语言的选项。Cocoon非常适合允许他们自己添加语言,但是,我如何才能在表单中获得3个语言实例呢 cvs/_form.html.haml cvs/_language_fields.html.haml 在当前状态下,表单的此部分如下所示: 但我想要的是: 根据Pablo的回答,我在控制器中添加了以下内容: def new @cv =

我有一个表格来收集用户的简历信息。在这本书中,我需要收集他们说什么语言,以及他们对每种语言的熟练程度。我想有3种语言是必需的,已经在表单上,并有允许用户添加其他语言的选项。Cocoon非常适合允许他们自己添加语言,但是,我如何才能在表单中获得3个语言实例呢

cvs/_form.html.haml cvs/_language_fields.html.haml 在当前状态下,表单的此部分如下所示:

但我想要的是:

根据Pablo的回答,我在控制器中添加了以下内容:

def new
  @cv = @user.build_cv
  @cv.languages.build(name: 'English')
  @cv.languages.build(name: 'Cantonese')
  @cv.languages.build(name: 'Mandarin')
end
def new
  @cv = @user.build_cv  #or current_user.build_cv
  3.times do { @cv.languages.build }
end
这让我走了这么远:
现在,我只需要弄清楚如何使语言“固定”,这样它们就不会被更改,我需要去掉Cocoon提供的“删除语言”链接。

您必须在控制器中创建三种语言:

def new
  @cv = @user.build_cv
  @cv.languages.build(name: 'English')
  @cv.languages.build(name: 'Cantonese')
  @cv.languages.build(name: 'Mandarin')
end
def new
  @cv = @user.build_cv  #or current_user.build_cv
  3.times do { @cv.languages.build }
end
要获取3种特定语言,请在控制器中使用以下语言:

def new
  @cv = @user.build_cv
  @cv.languages.build(name: 'English')
  @cv.languages.build(name: 'Cantonese')
  @cv.languages.build(name: 'Mandarin')
end
然后,要在表单中显示这三个,使其不可编辑和不可移动,请将表单更改为:

= f.simple_fields_for :languages do |language|
  .row
    = language.input :name, disabled: true, wrapper_html: { class: 'col-sm-4' }
    = language.input :read, collection: @language_levels, wrapper_html: { class: 'col-sm-2' }
    = language.input :write, collection: @language_levels, wrapper_html: { class: 'col-sm-2' }
    = language.input :speak, collection: @language_levels, wrapper_html: { class: 'col-sm-2' }
    = language.input :listen, collection: @language_levels, wrapper_html: { class: 'col-sm-2' }
.links
  = link_to_add_association 'Add Language', f, :languages, class: 'btn btn-success btn-sm'

我最后不得不这样做,以便预先填写姓名,但是,我想我需要想出更复杂的办法。我想摆脱“删除语言”链接,最好也设置它,这样他们就不能更改语言。不过,你的回答肯定让我走上了正确的道路。多谢各位
def new@cv=@user.build_cv@cv.languages.build(名称:“英语”)@cv.languages.build(名称:“粤语”)@cv.languages.build(名称:“普通话”)end
你说得对。我没有读到用户可以有多个简历,我将语言与用户关联,但你得到了这个想法:)。没关系,我知道了。我用解决方案编辑了您的答案,并将其标记为“已回答”。谢谢你的帮助!