On Mon, Sep 27, 2010 at 2:16 AM, swartz <[email protected]> wrote:
> Hi Jim,
>
> Thank you for replying.
>
> I have been down that road before, I had to do this
>  include ActionView::Helpers::FormHelper  (for form_for)
>  include ActionView::Helpers::FormTagHelper (for form_tag)
>  include ActionController::RequestForgeryProtection ( for
> protect_from_forgery?).
>
> But after doing all this, it continued to complain:
> "undefined method form_tag"
>
> So I gave up after being unable to make any progress.
>
> I realize that tags have access to Page attributes/methods only.
> So i've tried going via response object that is available to Page
> tags.
>
> Is what I'm trying to do even makes sense?
> I just want deal with form input (with nested model attributes) more
> easily.
>
>
>
>
> On Sep 26, 12:06 pm, Jim Gay <[email protected]> wrote:
>> On Tue, Sep 21, 2010 at 4:21 PM, swartz <[email protected]> wrote:
>> > I'm working on a bit of an extension for processing survey data (idea
>> > from and partially based on questionnaire extension that is no longer
>> > maintained).
>>
>> > I'm trying to use form_for, fields_for and various helpers that rails
>> > provides inside pre-defined radius tags.
>>
>> > Is there any way I could achieve some like this:
>>
>> >  # ------ <r:survey:form>
>> > -----------------------------------------------------
>>
>> >  tag 'survey:form' do |tag|
>>
>> >    # call form_for :survey_result here, which would render form
>> > header
>>
>> >    tag.expand # render questions
>>
>> >    # form_for would end here, closes </form>
>>
>> >  end
>>
>> >  # ------ <r:survey:questions>
>> > ------------------------------------------------
>> >  tag 'survey:questions' do |tag|
>> >    tag.expand
>> >  end
>>
>> >  # ------ <r:survey:questions:each>
>> > -------------------------------------------
>> >  tag 'survey:questions:each' do |tag|
>> >    result = []
>> >    survey = tag.locals.survey
>> >    # fields_for :result_entries
>> >    survey.survey_questions.sort_by{|q| q.order}.each do |question|
>> >      tag.locals.question = question
>> >      result << tag.expand
>> >    end
>> >    result
>> >  end
>>
>> >  # ------ <r:survey:questions:each:question>
>> > ----------------------------------
>> >  tag 'survey:questions:each:question' do |tag|
>> >    question = tag.locals.question
>> >    question.content
>> >  end
>>
>> >  # ------ <r:survey:questions:each:answers>
>> > ----------------------------------
>> >  tag 'survey:questions:each:question' do |tag|
>> >    question = tag.locals.question
>> >    # for each qa in question.answers
>> >    # form.text_field :value
>> >    # and so on
>> >  end
>>
>> > I hope you get the idea.
>>
>> You'd need to include the modules into your tag module.
>> Something like
>>
>> include ActionView::Helpers::FormHelper
>>
>> and then you should be able to use those helpers.
>>
>> Tags are rendered from models (Page) not from views like you do in a
>> typical rails app, so you're creating this content from a different
>> perspective.
>>

It's been a while since I played with this.
Try making an instance of ActionView::Base and calling the methods on that.



-- 
Jim Gay
Saturn Flyer LLC
http://www.saturnflyer.com
571-403-0338

Reply via email to