Динамически передать значение Hash в частичное - PullRequest
0 голосов
/ 21 апреля 2011

Я столкнулся с проблемой передачи динамического значения хеша в частичный файл. Я отображал имена людей на моей странице (это частичное). Значение хеша выглядит так:

names[1] = "James"  
names[2] = "Williams"  
names[3] = "Jack"  

render :partial => "list", :locals => {:names => names}  

Мне нужно передать значение хеша динамически. Как я могу это сделать? В этом примере новый хеш выглядит так:

names[21] = 'Flink'  
names[81] = 'Mark'

Мой код


class PrlcController < ApplicationController
def bar
  @names = Hash.new
  @names[1] = "James"  
  @names[2] = "Williams"  
  @names[3] = "Jack"  
end

def foo_ajax
  @names = Hash.new
  @names[21] = 'Flink'  
  @names[81] = 'Mark'
end

end

bar.rhtml
----------

<!-- Name listing section -->
<%= render :partial => "list", :locals => "{:names => @names}" %>

<!-- AJAX calling section -->
<%= link_to_function "call testing", :onclick => "load_foo_ajax_data" %>


<!-- AJAX section -->
<div id="foo_ajax_data">
</div>

<!-- script section -->
function load_foo_ajax_data() {
       new Ajax.Updater("foo_ajax_data","/Prlc/foo_ajax", {
            asynchronous:true,
            evalScripts:true,
            onComplete:function(request){             
            },
            onLoading:function(request){}
        });
}


foo_ajax.rhtml
--------------
Some process here.


_list.rhtml
-----------
Display the names

1 Ответ

0 голосов
/ 21 апреля 2011

Попробуйте выполнить

class PrlcController < ApplicationController
  def bar
    @names = Hash.new
    @names[1] = "James"  
    @names[2] = "Williams"  
    @names[3] = "Jack"  
  end

  def foo_ajax
    @names = Hash.new
    @names[1] = 'Flink'  
    @names[2] = 'Mark'
    render :update do |page|
      page.replace_html  'foo_ajax_data', :partial => "list", :object => [@names]
    end
  end

end

bar.rhtml

<%= render :partial => "list", :locals => "{:names => @names}" %>    

<!-- AJAX section -->
<div id="foo_ajax_data">
  <!-- Name listing section -->
</div>

<!-- AJAX calling section -->
<%= link_to_remote "call testing", :url => { :action => "load_foo_ajax_data"} %>
...