了解渲染:部分在轨道3?

时间:2012-08-27 11:11:04

标签: ruby-on-rails ruby ruby-on-rails-3

当我更改应用程序的内容状态时,数据库更新的后台运行正常。但是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_attributesrender :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)

最后一行显示部分被渲染。但视图没有变化。这意味着页面上的元素没有任何变化。

反馈事件的rake路径:

  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

刷新页面后会显示更改。但我不想再次加载页面。

2 个答案:

答案 0 :(得分:0)

您没有将控制器的局部变量“feedback_question”传递给部分文件_feedback_question_status.html.erb。

所以你需要传递局部变量“feedback_question”,如下所示

render:partial =&gt; “feedback_question_status”,:localts =&gt; {:feedback_question =&gt; @feedback_question}

其中@feedback_question是一个需要在控制器中创建的实例变量。

答案 1 :(得分: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>

不要重复你的代码。