我目前只是试图根据单选按钮选择在用户视图中渲染不同的图像。如果我硬编码选择,我能够操作图像,但我找不到如何将用户的选择从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对象保存到会话中并在此处使用吗?谢谢
答案 0 :(得分:1)
$.getScript()
方法只是$.ajax()
方法的简写(链接:http://api.jquery.com/jQuery.getScript/)
您可以使用具有$.ajax()
属性的普通data
方法。例如:
$.ajax({
url: this.href,
dataType: "script",
data: { image: $(this).val() }
});
现在在rails中,您可以使用params
哈希来访问它。