Rails, 给出远程局部变量
Rails, Giving a remote partial local variables
所以我有这个部分有 2 个变量: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>
我通过 :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
与您的视图同时呈现,您可以创建 coursetitle
和 routenumber
实例变量并在控制器中设置它们(@coursetitle
和 @routenumber
).然后您将能够在视图和部分中访问它们。
您也可以考虑使用 cells gem,我认为它是为处理此类问题而创建的。我不知道在 Rails.
中是否有将局部变量传递给局部变量的方法
但听起来 correct_answers.js
并未与您的视图同时呈现。在这种情况下,您可以确保 correct_answer_courses_path
路由包含 coursetitle
和 routenumber
的值。例如在您的 routes.rb 文件中
get '/course/:title/route/:number', to: 'controller#action', as: 'correct_answer_courses'
你会得到 correct_answer_courses_path(coursetitle, routenumber)
的路径。然后在呈现部分的控制器操作中使用 params[:title]
和 params[:number]
获取这些值,将它们设置为实例变量,然后在部分中使用它们。
所以我有这个部分有 2 个变量: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>
我通过 :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
与您的视图同时呈现,您可以创建 coursetitle
和 routenumber
实例变量并在控制器中设置它们(@coursetitle
和 @routenumber
).然后您将能够在视图和部分中访问它们。
您也可以考虑使用 cells gem,我认为它是为处理此类问题而创建的。我不知道在 Rails.
中是否有将局部变量传递给局部变量的方法但听起来 correct_answers.js
并未与您的视图同时呈现。在这种情况下,您可以确保 correct_answer_courses_path
路由包含 coursetitle
和 routenumber
的值。例如在您的 routes.rb 文件中
get '/course/:title/route/:number', to: 'controller#action', as: 'correct_answer_courses'
你会得到 correct_answer_courses_path(coursetitle, routenumber)
的路径。然后在呈现部分的控制器操作中使用 params[:title]
和 params[:number]
获取这些值,将它们设置为实例变量,然后在部分中使用它们。