Rails, 给出远程局部变量

Rails, Giving a remote partial local variables

所以我有这个部分有 2 个变量:coursetitleroutenumber。我尝试从视图中设置这些变量,但我无法从局部访问这些变量,除非我将它们设为全局变量。我正在寻找一种从视图或控制器传递这些变量的方法,但我对为什么我不能从视图中设置它们有点迷惑。

<div>
<h2> Correct!</h2>       

      <%= link_to "Next", "/courses/#{coursetitle}_q#{routenumber}",class:"btn btn-warning" %>
      <%= render 'layouts/coursefooter' %>


      <!-- fix for bootstrap navbar render bug -->
      <script> 
      $( ".puller" ).addClass( "pull-left" );
      </script>

我通过 :remote 这样称呼这个部分:

<%= link_to "Correct", correct_answer_courses_path,:remote => true,:class=>"btn btn-warning"  %>

我的 correct_answer.js 看起来像这样:

$("#correct_answer").html("<%= j render partial: "beginnercourse/correct" %>");

在controller中,可以定义实例变量@coursetitle@routenumber

$("#correct_answer").html("<%= j render partial: "beginnercourse/correct", coursetitle: @coursetitle, routenumber: @routenumber %>");

我不太清楚你的设置。如果 correct_answer.js 与您的视图同时呈现,您可以创建 coursetitleroutenumber 实例变量并在控制器中设置它们(@coursetitle@routenumber ).然后您将能够在视图和部分中访问它们。

您也可以考虑使用 cells gem,我认为它是为处理此类问题而创建的。我不知道在 Rails.

中是否有将局部变量传递给局部变量的方法

但听起来 correct_answers.js 并未与您的视图同时呈现。在这种情况下,您可以确保 correct_answer_courses_path 路由包含 coursetitleroutenumber 的值。例如在您的 routes.rb 文件中

get '/course/:title/route/:number', to: 'controller#action', as: 'correct_answer_courses'

你会得到 correct_answer_courses_path(coursetitle, routenumber) 的路径。然后在呈现部分的控制器操作中使用 params[:title]params[:number] 获取这些值,将它们设置为实例变量,然后在部分中使用它们。