限制simple_form_for Ruby on Rails中相关记录号 [英] Limit simple_form_for associated records number in Ruby on Rails

查看:133
本文介绍了限制simple_form_for Ruby on Rails中相关记录号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有问题251大心理测试。每个用户都可以完成该测试很多次。因此,我创建摘要模型重新present每完成。每个小结有许多答案。对于每一个总结我创建了一个重新的答案presents集合的形式,使用超薄templater和simple_form宝石:

I have a large psychological test of 251 question. Each user can complete that test many times. So I created Summary model to represent each completion. Each Summary has many Answers. For each Summary I created a form that represents collection of answers, using Slim templater and simple_form gem:

= simple_form_for(@summary) do |f|
  = f.simple_fields_for :answers do |a|
    .question
      = a.input :question_id, as: :hidden
      div= a.object.question.title
      - if a.object.question.kind_of? SpiritualityQuestion
        ol class="sortable"
          - a.object.question.sortable_variants.each do |sortable_variant|
            = content_tag_for :li, sortable_variant
              = sortable_variant.title
        = a.input :text_data, as: :hidden, input_html: { class: 'sortable_data' }
      - elsif a.object.question.kind_of? MultilineQuestion
        div Time remaining: <span class="time">60</span> s.
        = button_tag 'Start', type: 'button', class: 'start_button btn btn-primary'
        = a.input :text_data, label: false, input_html: { class: 'span8 timed_text', cols: '60', rows: '20', disabled: true }
      - else
        = a.association :variant, collection: a.object.question.variants, as: :radio, label: false
    br
  = f.input :user_id, as: :hidden
  = f.input :psy_test_id, as: :hidden

  .actions
    = f.button :submit, value: 'Save', class: 'btn btn-large btn-success'

和我有相关的控制器动作:

And I have related controller action:

@summary = Summary.where(completed: false, user: current_user, psy_test: PsyTest.first)
                  .includes(:answers => { :question => :variants })
                  .first_or_initialize
@summary.build_answers if @summary.new_record?

Summary.build_answers:

Summary.build_answers:

def build_answers
  # Creating answers for questions
  psy_test.questions.includes(:variants).each do |q|
    answers.new(question: q)
  end
end

现在,我试图让被分页的考验,因为它是非常大的形式产生非常缓慢。所以,我想补充的限制和偏移的答案。这样的事情:

Now I'm trying to make the test to be paginated, because it's very large and the form generates very slowly. So I want to add limit and offset to answers. Something like that:

= f.simple_fields_for answers.limit(@limit).offset(@offset) do |a|

如何它可以制成?

How it can be made?

推荐答案

我看了做field_for源,发现简单的答案,这是我没能找到任何指南:

I've looked to do field_for source and found simple answer, which I wasn't able find in any guide:

= f.simple_fields_for :answers, @summary.answers.limit(@limit).offset(@offset) do |a|

这篇关于限制simple_form_for Ruby on Rails中相关记录号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆