"link_to... do ... end" 方法的替代方法
Alternative to "link_to... do ... end" aproach
我有这段代码。
<div class="tweet" id="tweet-<%= tweet.id %>">
<%= image_tag @user.avatar.url(:thumb) %>
<div class="tweet-content">
<strong><%= @user.first_name + " " + @user.last_name %></strong>
<span class="date">- <%= tweet.created_at.strftime("%e %B %Y") %></span>
<p><%= tweet.content %></p>
<div class="tweet-action">
<% @replies_count = tweet.replies_count %>
<a href="#" class="show-reply"></a>
<% @like_class = "glyphicon glyphicon-star like-tweet"+tweet.liked(current_user.id) %>
<% @like_id = "tweet-like-"+tweet.id.to_s %>
<%= link_to "", liked_tweets_path(tweet_id: tweet.id), method: :post, remote: true, class: @like_class, id: @like_id %>
<% if tweet.liked_tweets.count > 1 %>
<span><%= tweet.liked_tweets.count %></span>
<% end %>
<!-- <a href="#" class="like-tweet glyphicon glyphicon-star"></a> -->
<a href="#">Retweet</a>
</div>
<%= render 'tweets/form', parent: tweet %>
</div>
<div class="replies">
<!-- Here goes ajax resposnse tweets#show_resplies -->
</div>
</div>
我想实现当我点击“.tweet”时我想做这个动作tweets_show_replies_path(parent: tweet, active: false )
。当我试图将整个内容包装在 link_to .... do ... end
中时,它失败了并且 link 没有包装“.tweet”元素。
能告诉我如何实现我上面描述的效果吗?
使用一些 javascript 和一个 ajax 请求!
$(document).ready(function() {
$( ".tweet" ).click(function() {
$.ajax({
type: "POST",
format: "js",
url: <url for tweets_show_replies_path>,
data: {
parent: <%= tweet %>,
active: false
},
dataType: "script"
});
});
});
然后在您的控制器中,执行您需要的任何操作并渲染局部。
我有这段代码。
<div class="tweet" id="tweet-<%= tweet.id %>">
<%= image_tag @user.avatar.url(:thumb) %>
<div class="tweet-content">
<strong><%= @user.first_name + " " + @user.last_name %></strong>
<span class="date">- <%= tweet.created_at.strftime("%e %B %Y") %></span>
<p><%= tweet.content %></p>
<div class="tweet-action">
<% @replies_count = tweet.replies_count %>
<a href="#" class="show-reply"></a>
<% @like_class = "glyphicon glyphicon-star like-tweet"+tweet.liked(current_user.id) %>
<% @like_id = "tweet-like-"+tweet.id.to_s %>
<%= link_to "", liked_tweets_path(tweet_id: tweet.id), method: :post, remote: true, class: @like_class, id: @like_id %>
<% if tweet.liked_tweets.count > 1 %>
<span><%= tweet.liked_tweets.count %></span>
<% end %>
<!-- <a href="#" class="like-tweet glyphicon glyphicon-star"></a> -->
<a href="#">Retweet</a>
</div>
<%= render 'tweets/form', parent: tweet %>
</div>
<div class="replies">
<!-- Here goes ajax resposnse tweets#show_resplies -->
</div>
</div>
我想实现当我点击“.tweet”时我想做这个动作tweets_show_replies_path(parent: tweet, active: false )
。当我试图将整个内容包装在 link_to .... do ... end
中时,它失败了并且 link 没有包装“.tweet”元素。
能告诉我如何实现我上面描述的效果吗?
使用一些 javascript 和一个 ajax 请求!
$(document).ready(function() {
$( ".tweet" ).click(function() {
$.ajax({
type: "POST",
format: "js",
url: <url for tweets_show_replies_path>,
data: {
parent: <%= tweet %>,
active: false
},
dataType: "script"
});
});
});
然后在您的控制器中,执行您需要的任何操作并渲染局部。