2014-09-29 83 views
1

我正在開發rails 4 application,我必須從控制器渲染.js.erb file如何在.js.erb渲染文件中傳遞參數並獲得

現在我必須將參數從控制器傳遞給.js.erb文件並將該參數用於該文件。

控制器:

if @user.user_settings == nil 
     render "save_account_settings.js.erb", :locals => {:msg => "Your account settings saved successfully"} 
    else 
     render "save_account_settings.js.erb", :locals => {:msg => "Something goes wrong. Please try again."} 
    end 

以上內容來自控制器代碼,我必須要通過參數來.js.erb文件並使用它。

File: save_account_settings.js.erb 

$('#saved_message').text('<%=params[:msg]%>'); 

但是不適合我。

我在哪裏錯了。需要更改文件名或別的東西。

感謝

回答

0

設置你的消息作爲一個實例變量完全按照自己的.html.erb觀點:

if @user.user_settings == nil 
    @msg = "Your account settings saved successfully" 
else 
    @msg = "Something goes wrong. Please try again." 
end 

render "save_account_settings" 

而在你js.erb觀點:

$('#saved_message').text('<%= @msg %>'); 

注意:params中的控制器的視圖將始終是請求的參數。當您使用:locals將變量傳遞到視圖進行渲染時,它們將在視圖中作爲局部變量可用,即,只有msg而不是params[:msg]。後者將嘗試從請求中獲取msg參數,即?msg=value-from-query

+0

完美。謝謝哥們。 – user1780370 2014-09-30 07:31:01