我正在开发rails 4 application
,我必须从控制器中渲染.js.erb file
。
现在我必须将参数从控制器传递到.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 :(得分:1)
将消息设置为实例变量,与在.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