将值从 form_tag 传递到控制器,然后传递到视图

发布于 2024-12-22 19:56:28 字数 501 浏览 0 评论 0原文

我有一个生成器 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

随风而去 2024-12-29 19:56:28

看来您在操作 create 中设置了 @fname ,然后重定向到操作 show (其中渲染视图)。

当发生重定向时,当前请求(作为控制器的实例存在)将完成,并发出一个新请求 - 该请求不会与前一个请求共享 @fname

因此,如果您想获得正确的 @fname 值,您应该在 create 操作中渲染视图,或者在 show 操作中设置 @fname >。

It seems that you set @fname in action create and then redirect to action show (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 action show.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文