js.erb 传递参数错误
js.erb passing parameters wrongly
我有这个 link 在 "tweets" 控制器中触发我的 "show_replies" 方法
<% @replies_link = link_to "show replies", tweets_show_replies_path(:parent => tweet, active: false ), method: :post, remote: true, class: "show-replies" %>
如您所见,它有两个参数 parent 和 active 并且呈现为 this
<a class="show-replies" data-remote="true" rel="nofollow" data-method="post" href="/tweets/show_replies?active=false&parent=1">show replies</a>
show_replies 方法如下所示
def show_replies
@active_param = params[:active]
@parent = Tweet.find(params[:parent])
@tweet = Tweet.new
if @active_param === true
params[:active] = false
else
params[:active] = true
end
respond_to do |format|
format.html {render :nothing => true}
format.js
end
end
这是我的 show_replies.js.erb
var parent_tweet = $('#tweet-<%= @parent.id %>');
$(parent_tweet).find('.replies').append(' <%=j render "tweets/replies" %> ');
$(parent_tweet).find('.show-replies').attr('href', "<%=j tweets_show_replies_path(:parent => @parent, active: params[:active]) %>")
但是在用我的 show_replies.js.erb 更改 href 属性后,link 中的参数只是格式错误,即这个
<a class="show-replies active" data-remote="true" rel="nofollow" data-method="post" href="/tweets/show_replies?active=true&parent=1">show replies</a>
你知道为什么js脚本在我的属性url中添加了"amp;"吗?有办法解决吗?因为当我第二次点击 link 时,我的 "show_replies" 方法无法正确读取参数。
在Rails中,不安全的值会被自动转义。 &
被认为是一个不安全的值,因此它被转义为 &
.
但我认为生成的 link 不应该被转义,应该按我的意思使用。所以我认为你应该在这里使用原始输出:
<%== tweets_show_replies_path(:parent => @parent, active: params[:active]) %>
或:
<%= raw tweets_show_replies_path(:parent => @parent, active: params[:active]) %>
我有这个 link 在 "tweets" 控制器中触发我的 "show_replies" 方法
<% @replies_link = link_to "show replies", tweets_show_replies_path(:parent => tweet, active: false ), method: :post, remote: true, class: "show-replies" %>
如您所见,它有两个参数 parent 和 active 并且呈现为 this
<a class="show-replies" data-remote="true" rel="nofollow" data-method="post" href="/tweets/show_replies?active=false&parent=1">show replies</a>
show_replies 方法如下所示
def show_replies
@active_param = params[:active]
@parent = Tweet.find(params[:parent])
@tweet = Tweet.new
if @active_param === true
params[:active] = false
else
params[:active] = true
end
respond_to do |format|
format.html {render :nothing => true}
format.js
end
end
这是我的 show_replies.js.erb
var parent_tweet = $('#tweet-<%= @parent.id %>');
$(parent_tweet).find('.replies').append(' <%=j render "tweets/replies" %> ');
$(parent_tweet).find('.show-replies').attr('href', "<%=j tweets_show_replies_path(:parent => @parent, active: params[:active]) %>")
但是在用我的 show_replies.js.erb 更改 href 属性后,link 中的参数只是格式错误,即这个
<a class="show-replies active" data-remote="true" rel="nofollow" data-method="post" href="/tweets/show_replies?active=true&parent=1">show replies</a>
你知道为什么js脚本在我的属性url中添加了"amp;"吗?有办法解决吗?因为当我第二次点击 link 时,我的 "show_replies" 方法无法正确读取参数。
在Rails中,不安全的值会被自动转义。 &
被认为是一个不安全的值,因此它被转义为 &
.
但我认为生成的 link 不应该被转义,应该按我的意思使用。所以我认为你应该在这里使用原始输出:
<%== tweets_show_replies_path(:parent => @parent, active: params[:active]) %>
或:
<%= raw tweets_show_replies_path(:parent => @parent, active: params[:active]) %>