Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 9082537
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 16, 20262026-06-16T20:34:58+00:00 2026-06-16T20:34:58+00:00

So i have the following code: def new @all_areas = Area.all @area = Area.new

  • 0

So i have the following code:

def new 
    @all_areas = Area.all
    @area = Area.new
end

The reason i am passing in all_areas is it’s required for a drop down box in the form, Using mongoid and an Area can be recursively embedded in another Area.

My form has the following code:

 <% if @all_areas %>
        <%= f.label :parent_area %>
        <%= f.collection_select(:parent_area, @all_areas, :_id, :name, prompt: "Select a Parent...") %>
    <% end %>

However when i submit ‘invalid values, i.e blank name, the ‘new’ page does not render the select box to select a parent.

What is going on here? Is this a bug?

My create action is pretty simple, if it fails validation i just do the following:

else
     render 'new'

Why is @all_areas not passed to the view the second time? i have actually fixed it by changing the code in my create action to the following:

else
    @all_areas = Area.all
    render 'new'

But this is quite surprising, unless i am missing something?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-16T20:35:00+00:00Added an answer on June 16, 2026 at 8:35 pm

    It’s not a bug. The reason for the behaviour is that the create action is actually quite separate from the new action, so the instance variables you assigned in new don’t get carried over. render 'new' only renders the view called “new”, it doesn’t actually call the new action.

    new happens when you issue a GET request to /areas/new. create happens when you POST to /areas. Because they’re separate requests, the server doesn’t remember any state – in fact, you could call create without ever calling new (say if you used curl from the command line).

    Basically, your approach is correct, you need to set the @all_areas instance variable in both actions. You might want to extract it out into a separate private method to avoid the duplication.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have the following code: #!/usr/bin/ruby class Person def self.speak p = self.new puts
I have the following code: def maturities InfoItem.find_all_by_work_order(self.work_order).map(&:maturity) end I was thinking about changing
i have the following code def get(self): date = datetime.date.today() loc_query = Location.all() last_cursor
I have the following code in my model: def getFormattedAverages averages = Array.new(); self.items.each
I have the following code: def show @game = $site.new_game_of_type(params[:id]) @game.start end def update_game_time
I have following code: def whatever(url, data=None): req = urllib2.Request(url) res = urllib2.urlopen(req, data)
I have the following code: def query(self,query): lock = QMutexLocker(self.mutex) reply = self.conn.query(query) if
I have the following code: def add_record(self,values): self.sql.execute(INSERT INTO TEST VALUES (?,?) % values)
I have the following code: def input_scores(): scores = [] y = 1 for
I have a following simple code: def get(): return [lambda: i for i in

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.