0

アプリケーションのコンテンツ ステータスを変更すると、データベース更新のバックグラウンドが正常に機能します。しかし、link_to :loading操作は機能していません。

ビュー: ページ内の要素の _feedback_question_status.html.erb

<% if feedback_question.status == 1 %>
    <span id="feedback_question">enabled -- <%= link_to "change", {:action=>"feedback_question_status",:status => 0,:feedback_question=>feedback_question.id}, :remote=>true, :loading => "$('#feedback_question_disable_#{feedback_question.id}').replaceWith('<p>Loading..</p>')", :update =>"feedback_question"%></span>
<% else %>
    <span id="feedback_question">disabled -- <%= link_to "change",{:action=>"feedback_question_status",:status => 1, :feedback_question=>feedback_question.id }, :remote=>true, :loading => "$('#feedback_question_enable_#{feedback_question.id}').replaceWith('<p>Loading..</p>')", :update =>"feedback_question"%></span>
<% end %>

コントローラ:

update_attributesと_render :partial=>'feedback_question_status'

そしてサーバー上で:

Started GET "feedback/feedback_question_status?feedback_question=6&status=1" for 127.0.0.1 at 2012-08-27 16:25:47 +0530
... Snippet
   (0.2ms)  BEGIN
...
   (30.7ms)  COMMIT
  Rendered _feedback_question_status.html.erb (2.7ms)

最後の行は、パーシャルがレンダリングされたことを示しています。しかし、ビューに変更はありません。これは、ページ上の要素に何も起こらないことを意味します。

feedback_question のレーキ ルート:

  feedback_feedback_question_status        /feedback/feedback_question_status(.:format)                       feedback#feedback_question_status
                 feedback_questions        feedback/new_feedback_question(.:format)                          feedback#new_feedback_question
             edit_feedback_question        /feedback/:id/edit_feedback_question(.:format)                     feedback#edit_feedback_question
           update_feedback_question        /update_feedback_question/:id(.:format)                            feedback#update_feedback_question
           feedback_question_status        /feedback_question_status(.:format)                                feedback#feedback_question_status

ページを更新すると、変更が表示されます。しかし、ページを再度ロードしたくありません。

4

2 に答える 2

0

ローカル変数「feedback_question」をコントローラーから部分ファイル _feedback_question_status.html.erb に渡しませんでした。

したがって、以下のようにローカル変数「feedback_question」を渡す必要があります

render :partial => "feedback_question_status", :localts => { :feedback_question => @feedback_question }

@feedback_question はインスタンス変数で、コントローラーで作成する必要があります。

于 2012-08-27T11:55:46.243 に答える
0

これを交換してください

<% if feedback_question.status == 1 %>
  <span id="feedback_question">enabled -- <%= link_to "change", {:action=>"feedback_question_status",:status => 0,:feedback_question=>feedback_question.id}, :remote=>true, :loading => "$('#feedback_question_disable_#{feedback_question.id}').replaceWith('<p>Loading..</p>')", :update =>"feedback_question"%></span>
<% else %>
  <span id="feedback_question">disabled -- <%= link_to "change",{:action=>"feedback_question_status",:status => 1, :feedback_question=>feedback_question.id }, :remote=>true, :loading => "$('#feedback_question_enable_#{feedback_question.id}').replaceWith('<p>Loading..</p>')", :update =>"feedback_question"%></span>
<% end %>

これで

<span id="feedback_question"><%= feedback_question.status == 1 ? "enabled" : "disabled" %> -- <%= link_to "change", {:action=>"feedback_question_status",:status => (feedback_question.status == 1 ? 0 : 1),:feedback_question=>feedback_question.id}, :remote=>true, :loading => "$('#feedback_question_disable_#{feedback_question.id}').replaceWith('<p>Loading..</p>')", :update =>"feedback_question"%></span>

コードを繰り返さないでください。

于 2012-08-27T12:48:37.803 に答える