将值从 form_tag 传递到控制器,然后传递到视图
我有一个生成器 form_tag,其中有复选框。我没有将这些记录保存到数据库中,但我想对它们进行操作,所以我有我的“创建”方法:
...
def create
@generator = Generator.new(params[:generator])
@fname = @generator[:fname]
redirect_to generators_show_path
...
其中“fname”是复选框之一;) 我已经进入“显示”文件:
<p>
<b>Fname:</b>
<% if @fname.nil? %>
fname is nil!
<% else %>
fname has a value:D
<% end %>
</p>
但每次 fname 都是零!为什么?? :(
I've got a generator form_tag where I have checkboxes. I'm not saving these records to the db, but I want to operate on them, so I've got i my 'create' method:
...
def create
@generator = Generator.new(params[:generator])
@fname = @generator[:fname]
redirect_to generators_show_path
...
where 'fname' is one of the checkboxes ;)
And I've got in 'show' file:
<p>
<b>Fname:</b>
<% if @fname.nil? %>
fname is nil!
<% else %>
fname has a value:D
<% end %>
</p>
But every time fname is nil! why?? :(
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看来您在操作
create
中设置了@fname
,然后重定向到操作show
(其中渲染视图)。当发生重定向时,当前请求(作为控制器的实例存在)将完成,并发出一个新请求 - 该请求不会与前一个请求共享
@fname
。因此,如果您想获得正确的 @fname 值,您应该在
create
操作中渲染视图,或者在show
操作中设置@fname
>。It seems that you set
@fname
in actioncreate
and then redirect to actionshow
(where the view gets rendered).When a redirection happens, the current request (existing as an instance of your controller) is finished, and a new request is made - which does not share
@fname
with the previous one.Therefore, if you want to get the value of @fname right, you should either render the view in action
create
or set@fname
in actionshow
.