2013-03-12 42 views
0

我想渲染基於用戶在內的分類單元的部分。在我application.html.erb佈局我有下面的代碼行:部分帶有動態變量的渲染欄杆

<%= render 'spree/shared/women_subnav' if @enable_women %> 

在分類羣控制器,顯示方法裏面,我有:

@taxon_id = params[:id].split('/').first 

而且在分類羣#表明我有:

<% if @taxon_id == params[:id].split('/').first %> 
    <%= "@enable_#{@taxon_id}" = true %> 
<% end %> 

當我運行這個我得到一個SyntaxError。但在分類羣#表明如果我只需要輸入:

<% if @taxon_id == params[:id].split('/').first %> 
    <%= "@enable_#{@taxon_id}" %> 
<% end %> 

沒有「=真」,那麼頁面呈現,輸出「@enable_women」。所以我知道它獲得了正確的變量,我只需要將該變量設置爲true即可。我錯過了什麼?

非常感謝。

回答

1

使用instance_variable_set

instance_variable_set "@enable_#{@taxon_id}", true 

只是一個提醒,這是更好地做一個控制器裏面這些東西。

+0

這將是我的控制器內正確的語法: '高清顯示 @taxon_id =參數[:ID] .split( '/')第一 如果@taxon_id == PARAMS [:ID] .split(」 /').first \t instance_variable_set「@enable _#{@ taxon_id}」,true end' – reknirt 2013-03-12 15:45:38

3

所有我想給你一些擡頭首先:

  • 首先調用上的用戶submittable輸入不是一個偉大的想法(如果我提交ID =,它會返回零? )也非UTF-8編碼會導致您的應用程序崩潰,如:?id =?

  • 控制器是野獸!我看到你在視圖中設置了true/false instance_variable的值,請使用控制器在渲染其輸出前定義邏輯。特別是當參數依賴時。在控制器中作爲PARAMS :

這樣一個解決方案[:ID]應該建議的INT(11)值:

def action 
    # returning a Taxon should be a good idea here 
    @taxon = Taxon.find(params[:id]) 
    # as I would give a Taxon class an has_many relation to a User 
    @users = @taxon.users 
end 

和在動作的視圖

<%= render :partial => "taxons/users", collection: @users %> 

當然你會有很大的能力來確定返回的用戶的範圍,並相應地呈現想要的部分。

如果您想了解有關 「Rails的方式」 請閱讀更多相關資訊: http://guides.rubyonrails.org/

玩得開心!

+0

謝謝@dennis。我一定會將我的邏輯保存在控制器中。我感謝您的幫助! – reknirt 2013-03-12 16:50:39