我遇到以下代码中的:with子句的问题。
-counter.times do |c|
-elem = @tags[c]
#{elem.name}#{link_to_remote image_tag('x.png'), :url => {:controller => 'questions', :action => 'remove_tag_from_cart'}, :with => "'tag_remove=' + #{elem}"}
如果我取出:with
子句,则单击图像链接时会执行remove_tag_from_cart
。但是,我无法对elem
做任何事情,因为它没有以任何方式传递给remove_tag_from_cart。
如果我在那里留下:with
子句,则remove_tag_from_cart
根本不会被执行!
根据我的理解,:我应该允许我在remove_tag_from_cart
中执行此操作:
def remove_tag_from_cart
puts params[:tag_remove].name
end
同样,如果我包含:with子句,则此方法不会运行。
我想要的是将elem
或elem.id
传递给remove_tag_from_cart
,以便我可以使用它(查找内容等)。这是(即,使用:with)传递它的最佳/正确方法吗?如果没有,我的替代方案是什么?
答案 0 :(得分:1)
使用firebug跟踪ajax调用,查看生成的html等。
:with
选项(来自docs):
指定。的JavaScript表达式 XMLHttpRequest的参数。任何 表达式应返回有效的URL 查询字符串。
示例:
:with => "'name=' + $('name').value"
你正在做:with => "'tag_remove=' + #{elem}"
:with
:
link_to_remote image_tag('x.png'), :url => {:controller => 'questions', :action => 'remove_tag_from_cart', :tag_remove_id => elem.id}
并在控制器中使用
Tag.find(params[:tag_remove_id])