Rails 3.2 jQuery-Rails
私はあちこち検索しましたが、部分を更新するか、JS を介して部分を追加する js の方法しか見つかりませんでした。私はこれで運がありませんでした。問題は次のとおりです。
ページに紹介のリストがあり、紹介はインデックスページにパーシャルとして投稿されます。紹介ボックスには、返信ボタンと、紹介ごとの返信数のカウントがあります。静的には機能していましたが、紹介ボックスを新しいカウントで更新し、返信ボタンをアイコンに置き換えることはできません。はデータベースにアクセスしていますが、ボックスの更新で何かを台無しにしています。助けてください!
- ローカル変数を使用して新しい変数をレンダリングする必要がありますか?
- パーシャルから if ステートメントを削除し、js.erb ファイルを使用して何を表示するかを決定する必要がありますか?
応答コントローラー:
class RepliesController < ApplicationController
respond_to :html, :js
def new
@referral = Referral.find(params[:referral_id])
@reply = @referral.replies.new(:user_id => params[:user_id], :referral_id => params[:referral_id])
if @reply.save
format.html { notice: 'Replied' }
respond_with(@referral, :location => referrals_path)
end
end
end
_referral パーシャル:
.referralBox.cornerShadow{:id => "Referral#{referral.id}"}
- if current_user == referral.user or current_user.role == 'administrator'
= link_to '<i class="icon-pencil icon-large icon-grey" rel="tooltip" title="Edit"></i>'.html_safe, edit_referral_path(referral), class: "referralEdit"
= link_to '<i class="icon-remove icon-large icon-grey" rel="tooltip" title="Delete"></i>'.html_safe, referral, method: :delete, data: { confirm: 'Are you sure?' }, class: "referralClose"
.referralProfile
= link_to "#{image_tag(referral.user.image.url, :class => "img-circle img-border border-white", :style => "thumb")}".html_safe, referral.user
%ul.unstyled.inline
%li
= referral.description
- unless referral.replies.count == 0
- if referral.user == current_user
%i.icon-comments.icon-large{"rel" => "tooltip", "title" => "Replies"}
= referral.replies.count
- else
%i.icon-comments.icon-large.orange{"rel" => "tooltip", "title" => "Replies"}
= referral.replies.count
- unless current_user == referral.user
- if referral.replies.any?
%i.icon-ok.icon-large.pull-right.orange{"rel" => "tooltip", "title" => "Replied"}
- else
= link_to '<i class="icon-ok icon-large pull-right icon-grey" rel="tooltip" title="Reply"> Reply</i>'.html_safe, new_referral_reply_path(:referral_id => referral.id, :user_id => current_user.id), :id => "ReplySubmit", :remote => true
new.js.erb ビュー
$(".referralBox").html("<%= j(render(:partial => "@referral")) %>");
アプリケーション.js
jQuery.ajaxSetup({
'beforeSend': function (xhr) {xhr.setRequestHeader("Accept", "text/javascript")}
});