2014-09-04 29 views
0

我創建了一個呈現數據表格視圖的單元格,我希望將其用於其他表格視圖。對於每行數據,我希望有一些獨特的元素與標準列混合使用。現在,我的Cell的show.html.slim的簡化版本,部分看起來像:如何將自定義渲染代碼注入到單元格中?

- users.each do |user| 
    tr 
    /A column unique to User 
    td 
     = link_to_if current_user == user, "Groups", user_groups_path(user) 
    /Common code that can be shared across other tables 
    td user.name 

我希望能夠從這個層面提取用戶特定的代碼,並從上面注入它。 Cells documentation指出:

如果有疑問,請將視圖的嵌套部分封裝到單獨的單元格中。您可以使用單元格中的#cell方法來實例化嵌套單元格。

然而,這是很難簡單地實例化一個新小區(編輯:表格單元格內):

  1. 我需要知道要創建的細胞。
  2. 我需要能夠從父單元格傳遞信息(在我的示例中爲user)。
  3. 我需要能夠傳遞特定於子單元格的信息(在我的示例中爲current_user)。

將這種類型的局部渲染注入單元格有哪些選擇?他們中的任何一個通常是首選的解

+0

您是否正在渲染部分?我不清楚整體問題,尤其是涉及到桌子時。 – engineersmnky 2014-09-04 13:42:29

+0

我對錶格的使用只是提供一個具體的例子。我很樂意渲染一個部分,只要我可以告訴Cell什麼部分渲染(不同的上下文會有不同的部分),我可以提供部分特定的信息,而無需編輯我的一般單元代碼。 – Shepmaster 2014-09-04 14:56:59

+0

部分會接受局部特定的部分。條件邏輯可以在當前視圖中控制,也可以在部分呈現部分控制。 – engineersmnky 2014-09-04 17:45:07

回答

0

我最終只是界定在我的細胞一些方法每當我想要呈現DataTableCell接受塊

class DataTableCell < Cell::ViewModel 
    def row_prefix(&blk) 
    @_row_prefix = blk 
    end 

    def render_row_prefix(item) 
    return unless @_row_prefix 
    @_row_prefix.call(item).call 
    end 
end 

,我提供類似於塊:

cell = cell(:data_table) 
cell.row_prefix do |item| 
    cell(:users_row_prefix, user: item, current_user: current_user) 
end 

裏面我的手機,我可以撥打render_row_prefix(row_item)

我沒有接受這個解決方案,因爲它可以是一種重量級,但它確實有效。

相關問題