0

我目前正试图根据单选按钮选择在用户视图中呈现不同的图像。如果我对选择进行硬编码,我可以操纵图像,但我找不到如何将用户的选择从 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 对象保存到会话中并在这里使用它吗?谢谢

4

1 回答 1

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/

于 2012-06-12T20:57:17.010 回答