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

时间:2014-09-29 12:50:59

标签: ruby-on-rails-4 parameters

我正在开发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]%>');

但不适合我。

我哪里错了。需要更改文件名或其他内容。

由于

1 个答案:

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