শর্তটি হামলে সত্য হলে শ্রেণি সংযোজন করুন


155

যদি post.published?

.post
  / Post stuff

অন্যভাবে

.post.gray
  / Post stuff

আমি এটি রেলস সহায়তার সাথে বাস্তবায়ন করেছি এবং এটি কুৎসিত বলে মনে হচ্ছে।

= content_tag :div, :class => "post" + (" gray" unless post.published?).to_s do
  / Post stuff

দ্বিতীয় রূপ:

= content_tag :div, :class => "post" + (post.published? ? "" : " gray") do
  / Post stuff

আরও কি সহজ এবং এইচএমএল-নির্দিষ্ট উপায় আছে?

UPD। হামল-নির্দিষ্ট, তবে এখনও সহজ নয়:

%div{:class => "post" + (" gray" unless post.published?).to_s}
  / Post stuff

উত্তর:


331
.post{:class => ("gray" unless post.published?)}

73
একাধিক শর্তের জন্য কেবলমাত্র একটি পার্শ্ব নোট {{শ্রেণি: [('শর্ত 1 ব্যতীত' শ্রেণী 1 '), (' শর্ত 2 যদি শর্ত 2)]} `.. ইত্যাদি
মোহাম্মদ আবুশাদি

5
একাধিক শর্তের জন্য আরও সংক্ষিপ্তসার:{ class:[ (:class1 if cond1), (:class2 if cond2) ] }
Phrogz

1
দ্রষ্টব্য: প্রথম বন্ধনী প্রয়োজন বা আপনি রুবি সিনট্যাক্স ত্রুটি পাবেন।
তোফার ফ্যাঙ্গিও

21
- classes = ["post", ("gray" unless post.published?)]
= content_tag :div, class: classes do
  /Post stuff

def post_tag post, &block
  classes = ["post", ("gray" unless post.published?)]
  content_tag :div, class: classes, &block
end

= post_tag post
  /Post stuff

1
এত সংক্ষিপ্ত নয়, তবে সহায়ক হিসাবে রাখলে অন্য উপায়গুলির চেয়ে ভাল দেখায়।
সাইমন পেরেপেলিটসা

3
এটি ভালভাবে কাজ করে - আমি লক্ষ্য করেছি যে আপনার .compact.join(" ")যদিও প্রয়োজন নেই। আপনি কেবল পারেন:class => ["post active", ("gray" unless post.published?)]
স্টেনারসন

15

সত্যই সর্বোত্তম জিনিস হ'ল এটি একটি সহায়ক হিসাবে রাখা।

%div{ :class => published_class(post) }

#some_helper.rb

def published_class(post)
  "post #{post.published? ? '' : 'gray'}"
end

আমি এটি আমার সহায়ক ফাইলে রেখেছি, তবে আমার অ্যাপ্লিকেশনটি আমাকে বলে, কোনও "পোস্ট" ভেরিয়েবল নেই।
সাইমন পেরপেলিটসা

2
fyi: যদি আপনি কেবল একটি নির্দিষ্ট ক্ষেত্রে ক্লাস অন্তর্ভুক্ত করতে চান এবং অন্যান্য ক্ষেত্রে আপনি কেবল সেট করতে পারবেন না nilএবং বৈশিষ্ট্যটি সেট করা হবে না তার পরিবর্তেclass=""
এমমাচাইনগুন

14

এইচএমএল এটি পরিচালনা করার জন্য একটি সুন্দর নির্মিত আছে:

.post{class: [!post.published? && "gray"] }

এটি যেভাবে কাজ করে তা হ'ল শর্তসাপেক্ষে মূল্যায়ন হয় এবং যদি সত্য হয় তবে স্ট্রিংটি ক্লাসে অন্তর্ভুক্ত হয়ে যায়, যদি তা অন্তর্ভুক্ত করা হয় না।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.