Rails nested resource is showing up twice.. once at the start and once at the end









up vote
0
down vote

favorite












I have a resource called a ClinicalCase which has_many questions (nested resource). The premise is to show a case all the time, and be able to see one question at a time. My issue is that, if a case has 5 questions, the app is only showing 4. It will show the same question for the first array index and last array index, and everything in between will be the same.



For example, if case 1 has questions "foo", "bar" and "baz", "foo" and "bar" will only show up, with "foo" at the start and the end. I have no idea why this is happening.



I'm using will_paginate to assist with the pagination, as each user needs to see one case at a time, and one question at a time that belongs to the case.



Here's my code (working fine, except that the first and last question of a case show up as the exact same)



controller



 def tagged
@cases = ClinicalCase.with_tag(params[:tag]).paginate(:page => params[:case], :per_page => 1)
end


model



class ClinicalCase < ApplicationRecord
belongs_to :user

has_many :questions, dependent: :destroy, inverse_of: :clinical_case
has_many :answers

accepts_nested_attributes_for :questions, allow_destroy: true, reject_if: :all_blank

acts_as_taggable

scope :with_tag, -> (tag) tagged_with(tag) if tag.present?

def paginated_questions(page, per_page = 1)
questions.paginate(page: page, per_page: per_page)
end


view part 1: tagged.html.erb



<% @cases.each do |clin_case| %>

<%= render "clinical_cases/question", clin_case: clin_case, questions: clin_case.questions %>

<%= will_paginate @cases, :param_name => 'case', :previous_label => 'Previous Case', :next_label => 'Next Case', :page_links => false %><br>

<% end %>


view part 2: _question.html.erb



<% questions = clin_case.paginated_questions(params[:page]) %>
<% questions.each do |question| %>
<%= question.title %>

<% question.answers.shuffle.each do |x| %>
<% if x.correct? %>
<%= x.choice %>
<% else %>
<%= x.choice %>
<% end %>
<% end %>

<%= will_paginate questions, :previous_label => 'Prev. Ques.', :next_label => 'Next Question', :page_links => false %>


<% end %>









share|improve this question



























    up vote
    0
    down vote

    favorite












    I have a resource called a ClinicalCase which has_many questions (nested resource). The premise is to show a case all the time, and be able to see one question at a time. My issue is that, if a case has 5 questions, the app is only showing 4. It will show the same question for the first array index and last array index, and everything in between will be the same.



    For example, if case 1 has questions "foo", "bar" and "baz", "foo" and "bar" will only show up, with "foo" at the start and the end. I have no idea why this is happening.



    I'm using will_paginate to assist with the pagination, as each user needs to see one case at a time, and one question at a time that belongs to the case.



    Here's my code (working fine, except that the first and last question of a case show up as the exact same)



    controller



     def tagged
    @cases = ClinicalCase.with_tag(params[:tag]).paginate(:page => params[:case], :per_page => 1)
    end


    model



    class ClinicalCase < ApplicationRecord
    belongs_to :user

    has_many :questions, dependent: :destroy, inverse_of: :clinical_case
    has_many :answers

    accepts_nested_attributes_for :questions, allow_destroy: true, reject_if: :all_blank

    acts_as_taggable

    scope :with_tag, -> (tag) tagged_with(tag) if tag.present?

    def paginated_questions(page, per_page = 1)
    questions.paginate(page: page, per_page: per_page)
    end


    view part 1: tagged.html.erb



    <% @cases.each do |clin_case| %>

    <%= render "clinical_cases/question", clin_case: clin_case, questions: clin_case.questions %>

    <%= will_paginate @cases, :param_name => 'case', :previous_label => 'Previous Case', :next_label => 'Next Case', :page_links => false %><br>

    <% end %>


    view part 2: _question.html.erb



    <% questions = clin_case.paginated_questions(params[:page]) %>
    <% questions.each do |question| %>
    <%= question.title %>

    <% question.answers.shuffle.each do |x| %>
    <% if x.correct? %>
    <%= x.choice %>
    <% else %>
    <%= x.choice %>
    <% end %>
    <% end %>

    <%= will_paginate questions, :previous_label => 'Prev. Ques.', :next_label => 'Next Question', :page_links => false %>


    <% end %>









    share|improve this question

























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I have a resource called a ClinicalCase which has_many questions (nested resource). The premise is to show a case all the time, and be able to see one question at a time. My issue is that, if a case has 5 questions, the app is only showing 4. It will show the same question for the first array index and last array index, and everything in between will be the same.



      For example, if case 1 has questions "foo", "bar" and "baz", "foo" and "bar" will only show up, with "foo" at the start and the end. I have no idea why this is happening.



      I'm using will_paginate to assist with the pagination, as each user needs to see one case at a time, and one question at a time that belongs to the case.



      Here's my code (working fine, except that the first and last question of a case show up as the exact same)



      controller



       def tagged
      @cases = ClinicalCase.with_tag(params[:tag]).paginate(:page => params[:case], :per_page => 1)
      end


      model



      class ClinicalCase < ApplicationRecord
      belongs_to :user

      has_many :questions, dependent: :destroy, inverse_of: :clinical_case
      has_many :answers

      accepts_nested_attributes_for :questions, allow_destroy: true, reject_if: :all_blank

      acts_as_taggable

      scope :with_tag, -> (tag) tagged_with(tag) if tag.present?

      def paginated_questions(page, per_page = 1)
      questions.paginate(page: page, per_page: per_page)
      end


      view part 1: tagged.html.erb



      <% @cases.each do |clin_case| %>

      <%= render "clinical_cases/question", clin_case: clin_case, questions: clin_case.questions %>

      <%= will_paginate @cases, :param_name => 'case', :previous_label => 'Previous Case', :next_label => 'Next Case', :page_links => false %><br>

      <% end %>


      view part 2: _question.html.erb



      <% questions = clin_case.paginated_questions(params[:page]) %>
      <% questions.each do |question| %>
      <%= question.title %>

      <% question.answers.shuffle.each do |x| %>
      <% if x.correct? %>
      <%= x.choice %>
      <% else %>
      <%= x.choice %>
      <% end %>
      <% end %>

      <%= will_paginate questions, :previous_label => 'Prev. Ques.', :next_label => 'Next Question', :page_links => false %>


      <% end %>









      share|improve this question















      I have a resource called a ClinicalCase which has_many questions (nested resource). The premise is to show a case all the time, and be able to see one question at a time. My issue is that, if a case has 5 questions, the app is only showing 4. It will show the same question for the first array index and last array index, and everything in between will be the same.



      For example, if case 1 has questions "foo", "bar" and "baz", "foo" and "bar" will only show up, with "foo" at the start and the end. I have no idea why this is happening.



      I'm using will_paginate to assist with the pagination, as each user needs to see one case at a time, and one question at a time that belongs to the case.



      Here's my code (working fine, except that the first and last question of a case show up as the exact same)



      controller



       def tagged
      @cases = ClinicalCase.with_tag(params[:tag]).paginate(:page => params[:case], :per_page => 1)
      end


      model



      class ClinicalCase < ApplicationRecord
      belongs_to :user

      has_many :questions, dependent: :destroy, inverse_of: :clinical_case
      has_many :answers

      accepts_nested_attributes_for :questions, allow_destroy: true, reject_if: :all_blank

      acts_as_taggable

      scope :with_tag, -> (tag) tagged_with(tag) if tag.present?

      def paginated_questions(page, per_page = 1)
      questions.paginate(page: page, per_page: per_page)
      end


      view part 1: tagged.html.erb



      <% @cases.each do |clin_case| %>

      <%= render "clinical_cases/question", clin_case: clin_case, questions: clin_case.questions %>

      <%= will_paginate @cases, :param_name => 'case', :previous_label => 'Previous Case', :next_label => 'Next Case', :page_links => false %><br>

      <% end %>


      view part 2: _question.html.erb



      <% questions = clin_case.paginated_questions(params[:page]) %>
      <% questions.each do |question| %>
      <%= question.title %>

      <% question.answers.shuffle.each do |x| %>
      <% if x.correct? %>
      <%= x.choice %>
      <% else %>
      <%= x.choice %>
      <% end %>
      <% end %>

      <%= will_paginate questions, :previous_label => 'Prev. Ques.', :next_label => 'Next Question', :page_links => false %>


      <% end %>






      ruby-on-rails






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 8 at 21:51

























      asked Nov 8 at 21:25









      mazing

      133114




      133114






















          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote













          I figured it out, and I'm not sure why it started working but it did.



          <% @questions = clin_case.questions.order("created_at ASC").paginate(:page => params[:question], :per_page => 1) %>

          <%= render @questions %>


          I used the local variable to get the association and added an order method in ASC, and that caused it to work.






          share|improve this answer




















            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













             

            draft saved


            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53216362%2frails-nested-resource-is-showing-up-twice-once-at-the-start-and-once-at-the-en%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            0
            down vote













            I figured it out, and I'm not sure why it started working but it did.



            <% @questions = clin_case.questions.order("created_at ASC").paginate(:page => params[:question], :per_page => 1) %>

            <%= render @questions %>


            I used the local variable to get the association and added an order method in ASC, and that caused it to work.






            share|improve this answer
























              up vote
              0
              down vote













              I figured it out, and I'm not sure why it started working but it did.



              <% @questions = clin_case.questions.order("created_at ASC").paginate(:page => params[:question], :per_page => 1) %>

              <%= render @questions %>


              I used the local variable to get the association and added an order method in ASC, and that caused it to work.






              share|improve this answer






















                up vote
                0
                down vote










                up vote
                0
                down vote









                I figured it out, and I'm not sure why it started working but it did.



                <% @questions = clin_case.questions.order("created_at ASC").paginate(:page => params[:question], :per_page => 1) %>

                <%= render @questions %>


                I used the local variable to get the association and added an order method in ASC, and that caused it to work.






                share|improve this answer












                I figured it out, and I'm not sure why it started working but it did.



                <% @questions = clin_case.questions.order("created_at ASC").paginate(:page => params[:question], :per_page => 1) %>

                <%= render @questions %>


                I used the local variable to get the association and added an order method in ASC, and that caused it to work.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 9 at 11:02









                mazing

                133114




                133114



























                     

                    draft saved


                    draft discarded















































                     


                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53216362%2frails-nested-resource-is-showing-up-twice-once-at-the-start-and-once-at-the-en%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

                    Edmonton

                    Crossroads (UK TV series)