2016-04-23 45 views
0

所以我有這個部分有2個變量:coursetitleroutenumber。我試圖從視圖中設置這些變量,但我無法從部分訪問這些變量,除非我使它們成爲全局變量。我正在尋找一種方法來傳遞來自視圖或控制器的這些變量,但我爲什麼無法從視圖中設置它們而有點失落。Rails,給一個遠程局部變量

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

我把這部分由:遠程是這樣的:

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

而且我correct_answer.js看起來是這樣的:

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

回答

1

在控制器,你可以定義實例變量@coursetitle@routenumber

$("#correct_answer").html("<%= j render partial: "beginnercourse/correct", coursetitle: @coursetitle, routenumber: @routenumber %>"); 
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],將它們設置爲實例變量,然後在部分中使用它們。