使用单选按钮和JQuery更改图像

时间:2012-06-12 20:43:42

标签: jquery ruby-on-rails ruby-on-rails-3

我目前只是试图根据单选按钮选择在用户视图中渲染不同的图像。如果我硬编码选择,我能够操作图像,但我找不到如何将用户的选择从JQuery传递给Rails。

首先我的单选按钮是这样的:

<!-- VIEW CODE -->
<% [ 'credit_32.png', 'credit_64.png' ].each do |image| %>
          <%= radio_button_tag 'image', image, @image == image, :class => 'image' %><%= image_tag(image)%>
    <% end %>

然后我有一个div,我正在尝试更新任何基于选择的图像,我的功能要更改,在javascript文件中我在点击事件上听这个:

// Javascript Asset File
    $(function() {
        $("input.image").live("click", function() {
            $image = ($(this).val());
            $.getScript( this.href );
        });
    });

这会将用户的选择设置为$ image变量,并调用index.js.erb代码,然后重新呈现部分代码。

// Index.js.erb for responding to
    $("div#button").html("<%= escape_javascript(render(@button)) %>");

我遇到的问题是如何将我以前的变量变为部分变量?

<!-- Partial Code -->
    <% if @button_image = $image %>
        <%= link_to image_tag(@button_image), button_path(button, :only_path => false), :target => '_blank' %>
    <% else %>
        <%= link_to image_tag('credit_32.png'), button_path(button, :only_path => false), :target => '_blank' %>
    <% end %>

如果我可以将这个@button_image实例变量设置为我的JQuery $ image对象,我会很好,虽然我不知道这是否可行?我可以将JQuery对象保存到会话中并在此处使用吗?谢谢

1 个答案:

答案 0 :(得分:1)

$.getScript()方法只是$.ajax()方法的简写(链接:http://api.jquery.com/jQuery.getScript/

您可以使用具有$.ajax()属性的普通data方法。例如:

$.ajax({  
  url: this.href,  
  dataType: "script",  
  data: { image: $(this).val() }  
});

现在在rails中,您可以使用params哈希来访问它。

更多信息:http://api.jquery.com/jQuery.ajax/