تعديل سلوك link_to في تثبيت Redmine (روبي على القضبان)
-
21-08-2019 - |
سؤال
أحاول تعديل واجهة المستخدم الخاصة بتثبيت Redmine (Redmine 0.7.3.devel.2093 (MySQL)).
عندما تقوم بعرض مشروع في Redmine، فإنه يقوم بإنشاء قائمة بجميع المشاريع الفرعية للمشروع.
على سبيل المثال، app/views/projects/index.rhtml يدعو رابط ل وظيفة:
<% if @project_tree[project].any? %>
<p><%= l(:label_subproject_plural) %>:
<%= @project_tree[project].sort.collect {|subproject|
link_to(h(subproject.name), {:action => 'show', :id => subproject}, :class => (User.current.member_of?(subproject) ? "subp fav" : "subp"))}.join(', ') %></p>
<% end %>
الذي يخرج HTML التالي:
<p>Subprojects:
<a href="/projects/show/foo" class="subp fav">Foo Subproject</a>, <a href="/projects/show/bar" class="subp">Bar Subproject</a>, <a href="/projects/show/baz" class="subp fav">Baz Subproject</a></p>
نجد أن قائمة المشاريع الفرعية المفصولة بفواصل يصعب تحليلها بصريًا.نود أن يتم إدراج كل مشروع فرعي في السطر الخاص به.(أي علامة مناسبة - ستكون علامات UL أو OL أو P على كل رابط مثالية، ولكن سيكون استخدام BR بدلاً من الفاصلة أمرًا جيدًا تمامًا.)
ما هي أفضل طريقة لإجراء هذا التغيير؟لا أستطيع أن أجد أين link_to
يتم تعريفه في التطبيق؛يتلمس ل def link_to(
وما شابه ذلك يظهر شيئا.أنا من نوع واجهة المستخدم، لذا لا أفهم حقًا كيف يتعامل Rails مع هذه الأشياء - لا يبدو أنه تم تعريفها في قوالب العرض.
المحلول
يمكنك القيام بذلك مباشرة في الكود الذي قدمته.فقط تغير
join(', ')
ل
join('<br />')
يجب أن تفعل ذلك.
نصائح أخرى
رابط ل يتم توفيره بواسطة إطار عمل Rails - فهو لا يُنشئ الروابط كقائمة - بل يقوم ببساطة بإنشاء رابط واحد.تكمن المشكلة في الأمرsort.collect والكتلة التي تنشئ الاستدعاءات إلى link_to
يجب أن ينجح هذا، حيث يتم وضع المشاريع الفرعية في عناصر القائمة
<% @project_tree[project].sort.collect do |subproject| %>
<li>
<%= link_to(h(subproject.name), {:action => 'show', :id => subproject}, :class => (User.current.member_of?(subproject) ? "subp fav" : "subp")) %>
</li>
<% end %>
أردت أن أشير إلى أن أحدث إصدار من صندوق Redmine قام بتغيير قائمة المشروع لاستخدام قوائم HTML (ul وli).