2015-05-28 39 views
0

我不是要求代碼作爲答案,而是要求資源或一些一般指導。使用控制器來管理渲染邏輯而不是視圖

我有一個用戶索引頁。對於每個用戶,我檢查每個用戶對於當前用戶的「朋友狀態」。你可以想像,它是在視圖頁面是否漂亮冗長和ELSIF語句..這基本上是:

<% if current_user %> 
    <% if current_user.friend_with? profile.user %> 
     <span class="glyphicon glyphicon-user"></span> 
    <% elsif current_user.invited_by? profile.user %> 
     <%= link_to '.', friendship_path(profile.user), :method => "put", :class => "glyphicon glyphicon-check" %> 
    <% elsif current_user.connected_with? profile.user %> 
     <span class="glyphicon glyphicon-send" title="Pending approval"></span> 
    <% elsif current_user == profile.user %> 
     <span class="glyphicon glyphicon-user"></span> 
    <% else %> 
     <%= link_to '.', friendships_path(:user_id => profile), :method => "post", :class => "glyphicon glyphicon-plus" %> 

我在視圖頁面這整個的邏輯,這是非常麻煩的。我想稍微清理一下,然後把它藏在控制器中(如果可取的話)。

任何指導將非常感激。我想有一種方法來返回圖標的類型或呈現某種類型的html代碼並將其傳遞到視圖中。謝謝!!

+0

請在您的問題中包含相關代碼。 –

+0

使用幫手還是部分? –

+0

另外,請確保您實際上爲使用屏幕閱讀器的用戶在這些鏈接中提供了一些有意義的文本。 – max

回答

0

助手方法就是答案..

移動它在你的助手了一些方法,像

def my_awesome_helper_method 
- logic - 
end 

,並在視圖中只需要調用

<%=my_awesome_helper_method %> 

乾淨多了......!

+0

謝謝 - 我們用什麼語言/語法從生成器返回html代碼?例如,在幫助程序方法中,我想返回

,我該如何在控制器中編寫它? – dubc15

+0

您可以使用content_tag或將其作爲字符串返回並使用htmlsafe –

+0

也不在控制器中,這應該在幫助程序類中是應用程序/幫助程序文件夾 –

相關問題