On Jueves, 20 de Agosto de 2009 18:39:07 Paul Hamann escribió:
> I just want "Hello world" for a chained fields example.
>
> On the old Active Scaffold site, there was a 'demos' section.  That section
> included code for common yet complicated scenarios. I would like something
> similar for chaining fields.  Many others have sought the same thing from
> what I've seen while Googling.
>
> And FWIW, here's some philosophy.  I've seen many software companies and
> projects fail for misunderstanding one fact.  80% of potential developers
> only have 20% of the skills.  That 80% learns through copy/paste of working
> examples. Focus on providing better samples to work with, and you will
> increase your addressable market by 400%.

Here is an example, I haven't tried it, but I think it will work:

script/generate resource author name:string
script/generate resource book author:references name:string
script/generate resource user name:string favourite_author:references 
favourite_book:references

# app/models/book.rb:
class Book < ActiveRecord::Base
  belongs_to :author
  has_many :users, :foreign_key => 'favourite_book_id'
end

# app/models/author.rb:
class Author < ActiveRecord::Base
  has_many :books
  has_many :users, :foreign_key => 'favourite_author_id'
end

# app/models/user.rb:
class User < ActiveRecord::Base
  belongs_to :favourite_author, :class => 'Author'
  belongs_to :favourite_book, :class => 'Book'
end

# app/controllers/authors_controller.rb
class AuthorsController < ApplicationController
  active_scaffold
end

# app/controllers/books_controller.rb
class BooksController < ApplicationController
  active_scaffold
end

# app/controllers/users_controller.rb
class UsersController < ApplicationController
  active_scaffold do |config|
    config.columns[:favourite_author].form_ui = :select
    config.columns[:favourite_author].options = {:update_column => 
:favourite_book}
    config.columns[:favourite_book].form_ui = :select
  end
end

# app/helpers/users_helper.rb
class UsersHelper
  def options_for_association_conditions(association)
    if association.name == :favourite_book
      {'books.author_id' => @record.author_id}
    else
      super
    end
  end
end

>
> Thanks! Paul
>
> --- On Thu, 8/20/09, Sergio Cambra .:: entreCables S.L. ::. 
> <[email protected]> wrote:
> > From: Sergio Cambra .:: entreCables S.L. ::. <[email protected]>
> > Subject: Re: Yet another question on dynamic selects
> > To: [email protected]
> > Date: Thursday, August 20, 2009, 9:11 AM
> >
> > On Jueves, 20 de Agosto de 2009 17:59:16 Paul Hamann
> >
> > escribió:
> > > I ended up with a rather contrived example after
> >
> > looking at too many code
> >
> > > samples.  I really just want "Hello world."
> >
> > You are trying something harder thant Hello world. A hello
> > world example
> > shouldn't use chained fields in my opinion.
> >
> > > For survey, there are n number of surveys. 
> >
> > Surveys have n number of survey
> >
> > > questions. When a specific survey is selected, the
> >
> > questions for that
> >
> > > survey show up as options in the second select. 
> >
> > Like I said, it's a bit
> >
> > > contrived.
> >
> > But you are setting that in survey create and update forms.
> > Scenary you are
> > describing is easier, and more logical IMO, for a model
> > with belongs_to
> >
> > :survey and belongs_to :survey_question
> > :
> > > Thanks for the help, Paul
> > >
> > > --- On Thu, 8/20/09, Sergio Cambra .:: entreCables
> >
> > S.L. ::.
> > <[email protected]>
> >
> > wrote:
> > > > From: Sergio Cambra .:: entreCables S.L. ::.
> >
> > <[email protected]>
> >
> > > > Subject: Re: Yet another question on dynamic
> >
> > selects
> >
> > > > To: [email protected]
> > > > Date: Thursday, August 20, 2009, 12:49 AM
> > > >
> > > > On Jueves, 20 de Agosto de 2009 03:48:04 Paul
> >
> > Hamann
> >
> > > > escribió:
> > > > > Thanks again for all your help. Sadly, I'm
> >
> > still
> >
> > > > missing something. [BTW,
> > > >
> > > > > there's a search_sql in the thread example,
> >
> > but not in
> >
> > > > the wiki example?]
> > > >
> > > > > Here's the code:
> > > > >
> > > > > ============ schema
> >
> > ===============================
> >
> > > > >  create_table "survey_questions",
> > :
> > :force =>
> > :
> > > > true do |t|
> > > >
> > > > >     t.integer
> > > >
> > > > "survey_id",     :limit =>
> >
> > 11
> >
> > > > >     t.text
> > > >
> > > >    "question_text"
> > > >
> > > > >     t.datetime
> >
> > "created_at"
> >
> > > > >     t.datetime
> >
> > "updated_at"
> >
> > > > >   end
> > > > >
> > > > >   create_table "surveys",
> > :
> > :force =>
> > :
> > > > true do |t|
> > > >
> > > >
> > > >
> > > >    t.string   "name"
> > > >
> > > > >     t.datetime
> >
> > "created_at"
> >
> > > > >     t.datetime
> >
> > "updated_at"
> >
> > > > >   end
> > > > >
> > > > > ============ Model: survey.rb =========
> > > > >
> > > > > class Survey < ActiveRecord::Base
> > > > >
> > > > >   has_many :survey_questions
> > > > >
> > > > >   def to_tabel
> > > > >    "#{name}"
> > > > >   end
> > > > > end
> > > > >
> > > > > ============Model: survey_question.rb ====
> > > > >
> > > > > class SurveyQuestion <
> >
> > ActiveRecord::Base
> >
> > > > >   belongs_to :survey
> > > > >
> > > > >   def to_label
> > > > >    "#{question_text}"
> > > > >   end
> > > > > end
> > > > >
> > > > > ================= survey_helper.rb
> >
> > ==================
> >
> > > > > module SurveyHelper
> > > > >
> > > > >    def
> > > >
> > > > options_for_association_conditions(association)
> > > >
> > > > >      if association.name ==
> > > > >
> > > > :survey_question
> > > > :
> > > > >   
> > > >
> > > >    {'survey_questions.survey_id' =>
> > > > @record.survey_id}
> > > >
> > > > >      else
> > > > >       super
> > > > >      end
> > > > >    end
> > > > >
> > > > > end
> > > > >
> > > > > ============= survey_controller.rb
> > > >
> > > > =====================
> > > >
> > > > > class SurveyController <
> >
> > ApplicationController
> >
> > > > >  layout "default"
> > > > >  active_scaffold :survey
> > > > >
> > > > >  active_scaffold do |config|
> > > > > 
> >
> >    config.columns[:name].form_ui
> >
> > > > = :select
> > > >
> > > > > 
> >
> >    config.columns[:name].options
> >
> > > > = { :update_column => ':survey_question'
> > > >
> > > > > } config.columns['question_text'].form_ui =
> > :
> > :select
> > :
> > > > >   end
> > > > > end
> > > >
> > > > form_ui select automatically fills the options
> >
> > when column
> >
> > > > is an association
> > > > (neither name nor question_text are
> >
> > associations). You
> >
> > > > can't set question_text
> > > > form_ui from SurveyController because that column
> >
> > belongs
> >
> > > > to SurveyQuestion
> > > > model, you should do it in
> >
> > SurveyQuestionsController.
> >
> > > > I don't understand what you want to get. What
> >
> > options
> >
> > > > should be shown for
> > > > name?
> >
> > ==========================================================
> >
> > > > > --- On Wed, 8/19/09, Kerry Foley <[email protected]>
> > > >
> > > > wrote:
> > > > > > From: Kerry Foley <[email protected]>
> > > > > > Subject: Re: Yet another question on
> >
> > dynamic
> >
> > > > selects
> > > >
> > > > > > To: [email protected]
> > > > > > Date: Wednesday, August 19, 2009, 5:32
> >
> > PM
> >
> > > > > > It sounds like your column name is
> >
> > incorrect. You
> >
> > > > didn't
> > > >
> > > > > > paste you're
> > > > > > code so I can't say for sure. You
> >
> > should be doing
> >
> > > > something
> > > >
> > > > > > like
> > > > > > config.columns[:project_type].form_ui =
> > :
> > :select
> > :
> > > > > > #belongs_to
> > > > > > or
> > > > > > config.columns[:regions].form_ui =
> > > > > >
> > > > > > :select   #has_many
> > > > > >
> > > > > > it shouldn't be "_id" - it's the
> >
> > association
> >
> > > > name, not the
> > > >
> > > > > > column name.
> > > > > >
> > > > > > There are examples on the wiki e.g
> >
> > Getting
> >
> > > > Started;
> > > >
> > > > > > http://wiki.github.com/activescaffold/active_scaffold
> > > > > >
> > > > > > You don't need to build the select.
> > > > > >
> > > > > > I think there's a more or less complete
> >
> > set of
> >
> > > > controller,
> > > >
> > > > > > model and
> > > > > > helper code for what you are trying to
> >
> > do in the
> >
> > > > thread
> > > >
> > > > > > previously sent.
> > > > > >
> > > > > > http://groups.google.com/group/activescaffold/browse_thread/threa
> > > > > >d/2a e130 edb1d0e2d2
> > > > > >
> > > > > >
> > > > > > Regards,
> > > > > > Kerry
> > > > > >
> > > > > > Me wrote:
> > > > > > > Bare with me here.  I'm a
> >
> > little slow.
> >
> > > > So I tried
> > > >
> > > > > > the code, and I get:
> > > > > > > You have a nil object when you
> >
> > didn't expect
> >
> > > > it!
> > > >
> > > > > > > The error occurred while
> >
> > evaluating
> >
> > > > nil.form_ui=
> > > >
> > > > > > > Is there enough smarts built-in to
> >
> > populate
> >
> > > > the select
> > > >
> > > > > > boxes? Or do I
> > > > > >
> > > > > > > need something like:
> > > > > > >
> > > > > > > a= Author.find(:all).collect {
> > |
> > |a|
> > |
> > > > a.name  }
> > > >
> > > > > > > If that kind of code is required,
> >
> > do I put
> >
> > > > that in the
> > > >
> > > > > > helper form
> > > > > >
> > > > > > > override?  Any chance I can
> >
> > see one
> >
> > > > complete
> > > >
> > > > > > example that works?  I've
> > > > > >
> > > > > > > been banging my head on this for
> >
> > a
> >
> > > > while.  When I
> > > >
> > > > > > Google, I just come
> > > > > >
> > > > > > > across more people that have been
> >
> > banging
> >
> > > > there heads
> > > >
> > > > > > on this.
> > > > > >
> > > > > > > Thanks! Paul
> > > > > > >
> > > > > > > On Aug 19, 1:58 pm, Kerry Foley
> >
> > <[email protected]>
> >
> > > > > > wrote:
> > > > > > >   
> > > > > > >
> > > > > > >> http://groups.google.com/group/activescaffold/browse_thread/th
> > > > > > >>read /2a. ..
> > > > > > >>
> > > > > > >> Regards,
> > > > > > >> Kerry
> > > > > > >>
> > > > > > >> Me wrote:
> > > > > > >>     
> > > > > > >>
> > > > > > >>> Greetings!  First
> >
> > post.
> >
> > > > > > >>>   
> >
> >    
> >
> > > > > > >>> I've been greping the web
> >
> > for an AS
> >
> > > > example of
> > > >
> > > > > > populating a parent
> > > > > >
> > > > > > >>> select box, and then
> >
> > dynamically
> >
> > > > changing a
> > > >
> > > > > > child select box through
> > > > > >
> > > > > > >>> an "onchange" event. 
> >
> > I've seen
> >
> > > > the
> > > >
> > > > > > observer approach, but not with
> > > > > >
> > > > > > >>> AS.  Is there support
> >
> > for such
> >
> > > > a thing?
> > > >
> > > > > > >>>   
> >
> >    
> >
> > > > > > >>> I found this thread where
> >
> > this same
> >
> > > > question
> > > >
> > > > > > was asked.
> > > > > >
> > > > > > >>>   
> >
> >    
> >
> > > > > > >>> http://www.mail-archive.com/[email protected]/m
> > > > > > >>>sg00 108. ...
> > > > > > >>> The poor guy got a rather
> >
> > prickly
> >
> > > > > > response.  He eventually posted
> >
> > his
> >
> > > > > > >>> solution in the last msg
> >
> > of the
> >
> > > > thread.
> > > >
> > > > > > Unfortunately, I can't get
> > > > > >
> > > > > > >>> that solution to
> >
> > work.  The
> >
> > > > example [in
> > > >
> > > > > > plain English] was, "Surveys
> > > > > >
> > > > > > >>> have many survey_questions
> >
> > and
> >
> > > > surveys
> > > >
> > > > > > have_many survey_options."  If
> > > > > >
> > > > > > >>> options are meant to be
> >
> > answers to
> >
> > > > questions,
> > > >
> > > > > > then it should be
> > > > > >
> > > > > > >>> "Surveys have many
> >
> > questions.
> >
> > > > Questions
> > > >
> > > > > > have many options [multiple
> >
> > choice]."   That
> >
> > > > would be three
> > > >
> > > > > > levels.  I tried looking at the
> > > > > >
> > > > > > >>> survey_options table as
> >
> > some type of
> >
> > > > join with
> > > >
> > > > > > both foreign keys
> > > > > >
> > > > > > >>> [survey_id,
> > > >
> > > > survey_question_id].  If that
> > > >
> > > > > > were the case, then survey
> > > > > >
> > > > > > >>> "has many questions
> >
> > through
> >
> > > > > > survey_options."  That wasn't
> >
> > listed in
> >
> > > > > > >>> the example. 
> >
> > Clearly, I'm
> >
> > > > confused
> > > >
> > > > > > somewhere.
> > > > > >
> > > > > > >>>   
> >
> >    
> >
> > > > > > >>> I would appreciate it if
> >
> > someone
> >
> > > > could explain
> > > >
> > > > > > the example referenced
> > > > > >
> > > > > > >>> in the last message of the
> >
> > thread
> >
> > > > linked to
> > > >
> > > > > > above.  Alternatively. I
> > > > > >
> > > > > > >>> would appreciate a clear
> >
> > example of
> >
> > > > this
> > > >
> > > > > > pattern.  I think that this
> > > > > >
> > > > > > >>> is a common situation
> >
> > where some
> >
> > > > documentation
> > > >
> > > > > > would benefit many
> > > > > >
> > > > > > >>> people.
> > > > > > >>>   
> >
> >    
> >
> > > > > > >>> Thanks! Paul
> > > > > > >>>   
> >
> >    
> >
> > > > > > >   
> > > >
> > > > --
> > > > Sergio Cambra .:: entreCables S.L. ::.
> > > > Mariana Pineda 23, 50.018 Zaragoza
> > > > T) 902 021 404 F) 976 52 98 07 E) [email protected]
> >
> > --
> > Sergio Cambra .:: entreCables S.L. ::.
> > Mariana Pineda 23, 50.018 Zaragoza
> > T) 902 021 404 F) 976 52 98 07 E) [email protected]
>
> 
-- 
Sergio Cambra .:: entreCables S.L. ::.
Mariana Pineda 23, 50.018 Zaragoza
T) 902 021 404 F) 976 52 98 07 E) [email protected]


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"ActiveScaffold : Ruby on Rails plugin" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/activescaffold?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to