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>