0

本質的に、私はこのコードを表現する DRYer の方法を見つけようとしています:

<li><g:link controller="ActivityDashboard" action="summary">Summary</g:link></li>
<li><g:link controller="ActivityDashboard" action="user_details">User Details</g:link></li>
<li><g:link controller="ActivityDashboard" action="groups_monitors">Groups & Monitors</g:link></li>
<li><g:link controller="ActivityDashboard" action="Top Content">Top Content</g:link></li>
<li><g:link controller="ActivityDashboard" action="embedded_components">Embedded Components</g:link></li>
<li><g:link controller="ActivityDashboard" action="customer_summary">Customer Summary</g:link></li>

ご覧のとおり、繰り返しが多いので、次のように a タグを作成しました。

def navLink = { attrs, body ->
  out << "<li>"
  out << "<g:link controller='ActivityDashboard' action='${attrs.action}'>${attrs.title}"
  out << "</g:link></li>"
}

ただし、出力 html は正確には次のとおりです。

<g:link action="summary" controller="ActivityDashboard">Summary</g:link>

どうすれば次のようにレンダリングできますか:

<a href="/engagementlevels/activityDashboard/summary">Summary</a>

おまけ: タグからページの actionName 属性にアクセスできますか?

4

1 に答える 1

3

タグの g.link() バージョンを使用して、GString がタグを解析し、必要に応じて出力をレンダリングする必要があります。

out << g.link(attrs.title, controller: 'ActivityDashboard', action: attrs.action)
于 2013-01-24T23:28:20.433 に答える