Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 了解rails 3中的渲染:部分?_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 了解rails 3中的渲染:部分?

Ruby on rails 了解rails 3中的渲染:部分?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,当我更改应用程序上的内容状态时,数据库更新的后台工作正常。但是link\u to:load操作不起作用 查看:_feedback_question_status.html.erb,查看页面中的元素 <% if feedback_question.status == 1 %> <span id="feedback_question">enabled -- <%= link_to "change", {:action=>"feedback_question

当我更改应用程序上的内容状态时,数据库更新的后台工作正常。但是
link\u to:load
操作不起作用

查看:_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 %>
最后一行显示了局部渲染。但在视图上没有任何变化。这意味着页面上的元素没有发生任何变化

rake routs以获得反馈\u问题:

  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

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

您没有将局部变量“feedback\u question”从控制器传递到部分文件\u feedback\u question\u status.html.erb

所以你需要像下面这样传递局部变量“feedback\u question”

render:partial=>“feedback\u question\u status”,:localts=>{:feedback\u question=>@feedback\u question}

其中@feedback\u question是一个实例变量,需要在控制器中创建。

请替换此变量

<% 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 %>

已启用--“反馈问题状态”、:状态=>0、:反馈问题=>feedback问题.id}、:remote=>true、:loading=>“$”('.'反馈问题'>禁用.{反馈问题.id})。替换为('加载..

'),:update=>“反馈问题”%> 禁用--“反馈问题状态”、:状态=>1、:反馈问题=>feedback问题id}、:remote=>true、:loading=>“$”('.'反馈问题'>启用.{反馈问题.id})。替换为('加载..

'),:update=>“反馈问题”%>
由此

<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>
-“反馈问题状态”,:状态=>(反馈问题状态==1?0:1),:反馈问题=>feedback问题.id},:remote=>true,:loading=>“$”(''.'反馈问题.id}')。替换为('加载..

'),:update=>“反馈问题”%>

不要重复您的代码。

请向我们展示
bundle exec rake routes | grep feedback_question
您使用rails 2的编程风格在rails 3中编写的代码。考虑使用命名路由,并将所有JavaScript转换为UJS.YES。我已经用
render:partial
创建并传递了局部变量。Create action_name.js.erb,在这个js.erb文件中,您只需像下面那样使用,$(“#cert_元素”).html(“#cert_元素/element”,:locals=>{:cert_元素=>@cert_元素}))%>;好的,谢谢你的回复。
<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>