2015-07-19 104 views
1

我有這個鏈接時觸發地雷「show_replies」方法「鳴叫」控制器js.erb傳遞參數錯誤

<% @replies_link = link_to "show replies", tweets_show_replies_path(:parent => tweet, active: false), method: :post, remote: true, class: "show-replies" %> 

,你可以看到它有兩個參數活躍,它的渲染因爲這

<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]) %>") 

但改變HREF屬性與我show_replies.js.erb後鏈接中的參數只是在錯誤的格式是這樣的

<a class="show-replies active" data-remote="true" rel="nofollow" data-method="post" href="/tweets/show_replies?active=true&amp;parent=1">show replies</a> 

你知道爲什麼js腳本添加「amp」嗎?到我的屬性網址?有沒有辦法如何解決它?因爲當我點擊第二個鏈接時,我的「show_replies」方法無法正確讀取參數。

回答

0

在Rails中,不安全的值會自動轉義。 &被認爲是不安全的值,所以它被轉移到&amp;

但我認爲生成的鏈接不應該被轉義,應該按照我的意思使用。所以,我認爲你應該在這裏使用的原始輸出:

<%== tweets_show_replies_path(:parent => @parent, active: params[:active]) %> 

或:

<%= raw tweets_show_replies_path(:parent => @parent, active: params[:active]) %> 
+0

所以我使用不安全的或錯誤的做法? –

+0

在我看來錯誤的方法,但僅限於生成的鏈接。 – limekin

+0

請問您可以告訴我什麼會在你的oppinion更好的方法? –