রেলস-নেস্টেড কনটেন্ট_ট্যাগ


84

আমি এই জাতীয় কিছু তৈরি করতে কাস্টম সহায়ক হিসাবে কন্টেন্ট ট্যাগগুলি বাসা বেঁধে দেওয়ার চেষ্টা করছি:

<div class="field">
   <label>A Label</label>
   <input class="medium new_value" size="20" type="text" name="value_name" />
</div>

নোট করুন যে ইনপুটটি কোনও ফর্মের সাথে সম্পর্কিত নয়, এটি জাভাস্ক্রিপ্টের মাধ্যমে সংরক্ষণ করা হবে।

এখানে সহায়িকা রয়েছে (এটি আরও কিছু করবে তবে কেবল HTML প্রদর্শন করবে):

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

<%= editable_input 'Year Founded', 'companyStartDate' %>

যাইহোক, যখন আমি সহায়ককে কল করি তখন লেবেলটি প্রদর্শিত হয় না, কেবল ইনপুট প্রদর্শিত হয়। যদি এটি পাঠ্য_ফিল্ড_ট্যাগটি মন্তব্য করে তবে লেবেলটি প্রদর্শিত হবে।

ধন্যবাদ!

উত্তর:


155

+দ্রুত সমাধানের জন্য আপনার দরকার : ডি

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' %>

এর ব্লকের ভিতরে content_tag :div, কেবলমাত্র ফিরে আসা স্ট্রিংটি প্রদর্শিত হবে।


4
টাইপো (কেবল মন্তব্যে, তবে কিছুটা বিভ্রান্তিকর) - " এই লাইনে - নয় "
চৌলেট

যে যোগ করার পর, আমি বাক্যগঠন ত্রুটি পাবেন: বাক্যগঠন ত্রুটি, অপ্রত্যাশিত tIDENTIFIER, kDO বা '{' বা '(' text_field_tag নাম আশা, '': শ্রেণী => 'মাঝারি NEW_VALUE' ^
christo16

4
এটি নোংরা অনুভব করে ... কারণ এটি কোনও সহায়িকার পক্ষে একাধিক সামগ্রী ট্যাগ তৈরির বিরোধী-প্যাটার্ন?
এরিক ট্রুটম্যান

আমার পক্ষে কাজ করেনি, concatঅন্যান্য উত্তরগুলির মতো ব্যবহার করতে হয়েছিল
ডেক্স

55

আপনি কনক্যাট পদ্ধতিটিও ব্যবহার করতে পারেন :

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

উত্স: কারাগারে নেস্টিং সামগ্রী_ট্যাগ 3


কনক্যাট লাইনটি 1 লাইনে থাকাকালীন এটি আমার পক্ষে কাজ করেছিল। যদিও আমি এটির সাথে দীর্ঘসময়
খেলিনি

এইচটিএমএল_সেফ সমস্যা বিবেচনা করে এটি আরও ভাল উপায় way +নন-এইচটিএমসালফের স্ট্রিংয়ের মধ্যে ব্যবহার সমস্ত কিছুকে এইচটিএমএলএসএফ তৈরি করে দেবে
তিয়ান চেন

আপনি যদি কোনও ফর্ম নির্মাতা শ্রেণীর ভিতরে থাকেন তবে এটি হওয়া উচিত@template.concat
elquimista

আমি মনে করি এটি এর চেয়ে আরও পরিষ্কার করার সমাধান উপায় +। আরও পঠনযোগ্য এবং রুবোকপ পছন্দ করে না+
এসএসএনএক্সআর

2

গভীর বাসা বাঁধতে সাহায্য করার জন্য আমি একটি পরিবর্তনশীল এবং কনক্যাট ব্যবহার করি।

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

1

পুনরাবৃত্তি সহ নেস্টেড কনটেন্ট ট্যাগগুলি তৈরি করা কিছুটা আলাদা এবং প্রতিবার আমাকে পেয়ে যায় ... এখানে একটি পদ্ধতি রয়েছে:

      content_tag :div do
        friends.pluck(:firstname).map do |first| 
          concat( content_tag(:div, first, class: 'first') )
        end
      end
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.