Rails- nested content_tag

前端 未结 4 1838
执笔经年
执笔经年 2020-12-02 07:38

I\'m trying to nest content tags into a custom helper, to create something like this:

&l
相关标签:
4条回答
  • 2020-12-02 08:14

    You can also use the concat method:

    module InputHelper
      def editable_input(label,name)
        content_tag :div, :class => "field" do
          concat(content_tag(:label,label))
          concat(text_field_tag(name,'', :class => 'medium new_value'))
        end
      end
    end
    

    Source: Nesting content_tag in Rails 3

    0 讨论(0)
  • 2020-12-02 08:16

    You need a + to quick fix :D

    module InputHelper
      def editable_input(label,name)
        content_tag :div, :class => "field" do
          content_tag(:label,label) + # Note the + in this line
          text_field_tag(name,'', :class => 'medium new_value')
        end
      end
    end
    
    <%= editable_input 'Year Founded', 'companyStartDate' %>
    

    Inside the block of content_tag :div, only the last returned string would be displayed.

    0 讨论(0)
  • 2020-12-02 08:20

    I use a variable and concat to help with deeper nesting.

    def billing_address customer
      state_line = content_tag :div do
        concat(
          content_tag(:span, customer.BillAddress_City) + ' ' +
          content_tag(:span, customer.BillAddress_State) + ' ' +
          content_tag(:span, customer.BillAddress_PostalCode)
        )
      end
      content_tag :div do
        concat(
          content_tag(:div, customer.BillAddress_Addr1) +
          content_tag(:div, customer.BillAddress_Addr2) +
          content_tag(:div, customer.BillAddress_Addr3) +
          content_tag(:div, customer.BillAddress_Addr4) +
          content_tag(:div, state_line) +
          content_tag(:div, customer.BillAddress_Country) +
          content_tag(:div, customer.BillAddress_Note)
        )
      end
    end
    
    0 讨论(0)
  • 2020-12-02 08:23

    building nested content tags with iteration is a little different and gets me every time... here is one method:

          content_tag :div do
            friends.pluck(:firstname).map do |first| 
              concat( content_tag(:div, first, class: 'first') )
            end
          end
    
    0 讨论(0)
提交回复
热议问题