0

我有一個我在整個應用程序中使用的貨幣小部件。 IE瀏覽器。用戶從歐元 - >美元或其他13種貨幣更改貨幣。我還有其他一些用例,比如日期,但這個最容易解釋。貨幣基本上只是通過調用貨幣控制器來更新會話變量,然後使用一些JS來重新加載頁面,但我只想獲取頁面的某些元素(即反映貨幣變化而沒有其他內容)...軌道中的巧妙的通用形式部分

$("#places_list").html("<%= escape_javascript(render :partial => 'places/list') %>"); 

,或者如果另一控制器

$("#locations").html("<%= escape_javascript(render :partial => 'locations/places') %>"); 

但這些元件是特定於電流控制器,即,呈現控制器特定部分,諸如列表...(貨幣數學本身處於一個應用程序助手,所以沒有新的邏輯),貨幣控制器很簡單,部分由不同的控制器加載。 (位置,地點等)

除了在每個控制器中爲此目的制定操作之外,我如何使它可以呈現特定於當前控制器的元素,以便我可以智能地替換它們在js上,而不是重新加載? IE瀏覽器。我可以通過貨幣電流控制器

<%= hidden_field_tag :info, controller.controller_name %> 

我不知道是否有任何這是有道理的,但我希望是這樣,至少在我自己的大腦,如果沒有其他人的。

+0

我發現的一個可能的工作是使用render_component插件,這將允許m e從我目前的控制器外部呈現一個動作...我只是想知道是否有更好的方法,如果以及爲什麼這可能是一個壞主意? HTTP:// github上。com/vhochstein/render_component,因爲原始渲染組件是在rails2之前提取的,而我們生活在rails3的時代。 – holden 2010-10-05 19:49:48

回答

0

我已經嘗試了小應用程序及以下會成爲你的一個解決方案,

首先,在我的情況是我想要做的是有一個名爲屬性:信息在每個模型,這樣我就可以在我的視圖中調用它(<%= f.text_field:info%>)(請注意f可以是模型的任何實例)

爲此我需要爲每個模型添加info屬性。你必須這樣做

1的幾種方法 - 創建一個類(從AR :: Base的繼承和繼承給定類的所有其他型號)(但它需要一些代碼更改)

2 - 快速和醜陋的方式是注入我:信息屬性AR :: Base類(我做到了;))

在配置創建一個文件/初始化說curreny.rb並添加該代碼

module ActiveRecord 
class Base 
    attr_accessor :info 
end 
end 

後從你使用AR的任何視角看,都會有:info屬性

例如:用戶/新

新用戶

<% form_for(@user) do |f| %> 
    <%= f.error_messages %> 

    <p> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </p> 
    <p> 
    <%= f.label :info %><br /> 
    <%= f.text_field :info %> 
    </p> 
    <p> 
    <%= f.submit 'Create' %> 
    </p> 
<% end %> 

<%= link_to 'Back', users_path %> 

請注意:這不是一個很好的解決方案,但我認爲這個你可以開始考慮

歡呼

sameera