আমি কি ভিউটিতে বর্তমান কন্ট্রোলারের নাম পেতে পারি?


205

বর্তমান নিয়ামকটি ভিউয়ের মধ্যে থেকে কী তা বের করার কোনও উপায় আছে?

আমি কেন এটি জানতে চাইব তার উদাহরণের জন্য: বেশ কয়েকটি নিয়ামক একই লেআউটটি ভাগ করে নিলে আমি লেআউট ERB ফাইলে অংশ নিতে পারি যেখানে আমি নিয়ামকের উপর ভিত্তি করে বর্তমান পৃষ্ঠার মেনু আইটেমটি হাইলাইট করতে চাই।

হতে পারে এটি একটি খারাপ পদ্ধতির। যদি তা হয় তবে এটি করার চেয়ে বেশি পছন্দসই উপায় কী?

যদিও আমি বর্তমান কন্ট্রোলারের নাম কোনওভাবেই জানার বিষয়ে আগ্রহী।

(স্পষ্টতই আমি @controller_name = 'users'প্রতিটি কন্ট্রোলারের মতো কিছু রাখতে পারতাম ; তবে এটি মনে হয় রেলগুলি ইতিমধ্যে পর্দার আড়ালে করত would সুতরাং আমি কেবল ভাবছি যে কোনও অন্তর্নির্মিত উপায় আছে কিনা))

উত্তর:


246

controller_name বর্তমান দৃশ্যের পরিবেশন করতে ব্যবহৃত নিয়ামকের নাম ধারণ করে।


94
আসলে দেখুন ব্যবহার করার জন্য খারাপ অভ্যাস params। দয়া করে controller_nameপরিবর্তে ব্যবহার করুন
ক্রেরাস

1
@Coorasse ঠিক আছে, তথ্যের জন্য অবশ্যই তথ্য আছে তবে নিয়ামক_নামের উপর নির্ভর করা আরও ভাল
সেক

261

রেল গাইডগুলিতে এটি বলে:

প্যারামগুলির হ্যাশটিতে সর্বদা: নিয়ামক এবং: অ্যাকশন কীগুলি থাকবে তবে এই মানগুলি অ্যাক্সেস করার জন্য আপনার নিয়ন্ত্রণের_নাম এবং ক্রিয়া_নাম পদ্ধতিগুলি ব্যবহার করা উচিত

অ্যাকশনকন্ট্রোলার পরামিতি

সুতরাং আসুন আমরা বলি যে আপনার কাছে একটি সিএসএস বর্গ রয়েছে active, যা বর্তমানে কোনও পৃষ্ঠাতে খোলা আছে এমন কোনও লিঙ্কে sertedোকানো উচিত (সম্ভবত যাতে আপনি অন্যরকম স্টাইল করতে পারেন)। আপনার যদি static_pagesকোনও aboutক্রিয়াকলাপের সাথে নিয়ামক থাকে তবে আপনি নিজের দৃষ্টিতে লিঙ্কটি তেমনভাবে হাইলাইট করতে পারেন:

<li>
  <a class='button <% if controller.controller_name == "static_pages" && controller.action_name == "about" %>active<%end%>' href="https://stackoverflow.com/about">
      About Us
  </a>
</li>

21
যদি এর মতো নেমস্পেসের পিছনে আপনার নিয়ামক থাকে: Admin::Ordersতবে এবং যথাক্রমে হবে controller_nameএবং params[:controller]হবে । "orders""admin/orders"
ভিক্টর ফোনিক

8
আমি শুধু এই ব্যবহার করার চেষ্টা এবং Admin::UsersControllerআসলে একটি আছে controller_nameএর usersএবং controller_pathএর admin/usersপাগল 4.1.0 হবে।
ব্র্যান্ডন

89
#to get controller name:
<%= controller.controller_name %>
#=> 'users'

#to get action name, it is the method:
<%= controller.action_name %>
#=> 'show'


#to get id information:
<%= ActionController::Routing::Routes.recognize_path(request.url)[:id] %>
#=> '23'

# or display nicely
<%= debug Rails.application.routes.recognize_path(request.url) %>

উল্লেখ


1
আইডিটি পেতে, অ্যাকশনকন্ট্রোলার :: রাউটিং :: রুটগুলি আর কাজ করে না। আপনি এটি করতে পারেন: <% =
অনুরোধ.পথ_প্রেমিটারগুলি

2

controller_pathবর্তমান দর্শনটি পরিবেশন করতে ব্যবহৃত নিয়ামকের পথ ধরে। (যেমন admin/settings:)।

এবং

controller_nameবর্তমান দৃশ্যের পরিবেশন করতে ব্যবহৃত নিয়ামকের নাম ধারণ করে। (যেমন settings:)।


0

আপনি যদি আপনার অ্যাপ্লিকেশনটিতে সমস্ত স্টাইলশিট ব্যবহার করতে চান তবে কেবল এই আবেদনটি এইচটিএমএল.টিএমএল.রে যুক্ত করুন adds এটি <head> ট্যাগের ভিতরে .োকান

  <%= stylesheet_link_tag  controller.controller_name , media: 'all', 'data-turbolinks-track': 'reload' %>

এছাড়াও, একটি পৃথক নিয়ামকের উপর একই শ্রেণি সিএসএস নির্দিষ্ট করতে
এই bodyঅ্যাপ্লিকেশন html.erb এর লাইন যুক্ত করুন

  <body class="<%= controller.controller_name %>-<%= controller.action_name %>">

সুতরাং, এখন উদাহরণস্বরূপ আমি p'হোম' নিয়ামক এবং 'সূচক' ক্রিয়ায় ট্যাগটি পরিবর্তন করতে চাই । ভিতরে index.scssফাইল অ্যাড।

.nameOfController-nameOfAction <tag> { }

 .home-index p {
        color:red !important;
      }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.