我是rails的新手,我希望我的控制器使用从动作创建的变量@msg更新视图中的label / html字段。我现在有,
查看表单:
<%= form_tag({controller: "home", action: "drawMoney"}) do %>
<h1> Draw Out </h1>
<%= number_field_tag :draw, min: 1, max:1000 %>
<%= date_field_tag :customDate %>
<%= submit_tag "Save" %>
<% end %>
<p>
<%= "#{@msg}" %>
</p>
控制器
def drawMoney
@drawAmount = params[:draw]
@credit = Credit.getCredit('1')
@updateAmount = updatePrincipal(@credit.principal, @drawAmount)
@newLimit = updateLimit(@credit.currLimit, @drawAmount)
@msg = "success!"
if (@transaction = Transaction.create(userId: @credit.userId, date: params[:customDate], OPB: @credit.principal, amount: @drawAmount).valid?)
@credit.update(principal: @updateAmount, currLimit: @newLimit)
@transaction = Transaction.create(userId: @credit.userId, date: params[:customDate], OPB: @credit.principal, amount: @drawAmount)
else
@msg = "not valid"
end
redirect_to action: "index"
end
我已经阅读了ruby docs和youtube教程,尝试将@msg放在视图中,而@msg放在html中等等。但是这不会在视图中打印任何内容,也无法从搜索中找到答案。任何帮助将不胜感激!
编辑:
我尝试更改为&lt;%= @ msg%&gt;但它不起作用.. 所以当我单击提交按钮时调用该方法,直到那时没有@msg实例。这可能是个问题吗?
答案 0 :(得分:3)
当您重定向到索引时,将清除当前定义的变量。
控制器
flash[:msg] = "Success"
redirect_to action: "index"
视图
<% if flash[:msg] %>
<div class="message"><%= flash[:msg] %></div>
<% end %>
答案 1 :(得分:0)
试试这个:
<pre>
<%= @msg %>
</pre>
答案 2 :(得分:0)
将此<%= "#{@msg}" %>
更改为<%= @msg %>
您不必在此处进行插值,当您使用@符号创建控制器实例时,rails视图可以直接访问控制器实例。