با درود خدمت شما . من در یک مشکل کوچیک دچار انسداد مغزی شدم من در حال ساخت مسیر من در سایت کجاست یا breadcrumb هستم. یک مشکلی در کد هام دارم که اصل کد به شرح زیر می باشد
<nav aria-label="breadcrumb" class="breadcrumb">
<div class="container">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= page_path(@conn, :index) %>" class="a-home"><i class="fa fa-home" aria-hidden="true"></i> ترانگل</a></li>
<%= for %{title: title, link: link} <- @breadcrumb do %>
<%= if @conn.request_path == link && length(@breadcrumb) > 1 do %>
<li class="breadcrumb-item"><a href="<%= link %>"><%= title %></a></li>
<% else %>
<li class="breadcrumb-item active" aria-current="page"><%= title %></li>
<% end %>
<% end %>
</ol>
</div>
</nav>
اگر به شرط نگاه کنید متوجه می شید که من گفتم اگر لینک مسیر جاری با لینک متغییری که من دارم ارسال می کنم به تمپلیت خودم یکی بود بیا مثلا فلان html رو بزار
تا اینجا مشکلی نیست کار می کنه ولی دوتا مشکل در آینده پیش می یاد
۱. اگر من صفحه بندی داشته باشم مثلا به این شرح
get "/blog/:page", BlogController, :index
۲. و مشکل بعدی فکر کنید کاربر بخواد روی یک مطلب در blog کلیک کنه و بره تو مطلبی ولی باز باید مثلا اون html خاص برای منوی مادر فعال باشه
که در دو گزینه بالا من مشکل دارم .
در مثال منو شما فکر کنید وارد یک سایت می شید روی وبلاگ می زنید و وبلاگ متنش برجسته تر می شه چون روی اون منو هستید و تا اینجا مشکلی نیست حالا فکر کنید صفحه بندی می یاد یا می خواهید وارد یک مطلب بشید دیگه نمی تونه شرط رو بشناسه متاسفانه .
به عنوان مثال کد به شرح زیر می باشد
<%=if length(sub) > 0 do %>
<%=if addres === @conn.request_path do
tag(:li, class: "nav-item dropdown active")
else
tag(:li, class: "nav-item dropdown")
end %>
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<%= name %>
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<%= for {subname, subaddres, icon} <- sub do
raw "<a class=\"dropdown-item\" href=#{subaddres}><i class=\"#{icon}\" aria-hidden=\"true\"></i> #{subname}</a><div class=\"dropdown-divider\"></div>"
end %>
</div>
</li>
<% else %>
<%=
if addres === @conn.request_path do
tag(:li, class: "nav-item active")
else
tag(:li, class: "nav-item")
end
%>
و منو به شرح زیر می باشد:
def main_menu do
menu = [
home: {"خدمات", "/", [
{"طراحی وب اپلیکیشن", "/sup1", "fa fa-code"}, {"طراحی اپلیکیشن موبایل", "/sup2", "fa fa-television"}, {"افزونه نویسی جوملا", "/sup3", "fa fa-tablet"}
]},
blog: {"بلاگ", "/blog", [
]},
about: {"درباره ما", "/about", [
]},
contact: {"ارتباط با ما", "/contact", [
]}
]
menu
end
end
من در مسیر دهی و شناخت روتر اصلی دچار مشکل شدم . شما در این رابطه چه کاری می کردید ؟
برای درک بهتر نمونه سالم رو ببنید
حالا همین نمونه و باگ به وجود اومده در صفحه بندی
پیوست
در حال حاظر می تونم این کارو دستی ترش کنم ولی می خواستم داینامیک تر باشه و بیشتر خود کد بتونه خودشو با شرایط مختلف وقف بده