如何在.js.erb渲染文件中传递参数并获取

4

我正在开发一个基于Rails 4的应用程序,在其中我需要从控制器渲染一个.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]%>');

但是对我没有用。

我哪里出错了。需要更改文件名还是其他什么。

谢谢。

1个回答

2

将您的消息设置为实例变量,就像在.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


完美。谢谢伙计。 - user1780370

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接