Rails,给出一个远程的局部局部变量

时间:2016-04-23 07:30:45

标签: ruby-on-rails view controller partial

所以我有这个有两个变量的部分:$gen = "SELECT gender FROM tbl_users WHERE fname = '$val1'"; coursetitle。我尝试从视图中设置这些变量,但除非我将它们设置为全局,否则我无法从部分访问这些变量。我正在寻找一种方法从视图或控制器传递这些变量,但我有点迷失为什么我不能从视图中设置它们。

routenumber

我把它称为偏:这样远程:

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

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

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

2 个答案:

答案 0 :(得分:1)

在控制器中,您可以定义实例变量@coursetitle@routenumber

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

答案 1 :(得分:0)

我对你的设置有点不清楚。如果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]呈现部分获取部分的控制器操作中,将它们设置为实例变量,然后在部分中使用它们。