Radiant CMS: как использовать form_for, fields_for внутри тегов радиуса - PullRequest
1 голос
/ 24 сентября 2010

Я работаю над расширением для Radiant CMS, которое обрабатывает данные опросов. Я пытаюсь использовать form_for, fields_for и различные помощники, которые rails предоставляет внутри предопределенных тегов радиуса. Эти теги будут генерировать опрос на страницах Radiant.

Вот что я имею в виду для интеграции с Radiant:

<r:survey id="200">
  <r:survey:form>                 #<-- call to form_for
    <r:survey:questions:each>     # <-- calls fields_for
      <r:question>                # <-- renders question
      <r:answer_field>            #<-- renders input via text_field, text_area, etc
    </r:survey:questions:each>
  </r:survey:form>
</r:survey>

Поэтому, когда я вызываю , предполагается, что сгенерируется тег Я могу сделать это вручную, создав html, но я бы хотел использовать помощник form_for и тому подобное.

Есть ли способ, которым я мог бы достичь следующего:

# ------ <r:survey:form> -----------------------------
  tag 'survey:form' do |tag|
    # call form_for which would render form header and open <form> tag
    tag.expand
    # 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
    # should call fields_for here
    survey.survey_questions.sort_by{|q| q.order}.each do |question|
      tag.locals.question = question
      result << tag.expand
    end
    # end of fields_for
    result
  end 

Я надеюсь, что это объяснит то, что я пытаюсь достичь.

1 Ответ

2 голосов
/ 15 июля 2011

Вы должны иметь возможность просто включить модули Helper и использовать помощники непосредственно в определении тега, вот так:

module CustomTags
  include Radiant::Taggable
  include ActionView::Helpers::TagHelper
  include ActionView::Helpers::AssetTagHelper

  tag "my_tag" do |tag|
    javascript_include_tag :some_js_file
  end
end
...