Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何将值从视图发送到控制器_Ruby On Rails_Ruby_View_Controller_Hidden Field - Fatal编程技术网

Ruby on rails 如何将值从视图发送到控制器

Ruby on rails 如何将值从视图发送到控制器,ruby-on-rails,ruby,view,controller,hidden-field,Ruby On Rails,Ruby,View,Controller,Hidden Field,我试图获取数据库表中新创建的行的id,以便以后使用它。但它不会被传递,它只停留在查看器中。在选项卡或窗口关闭后,我需要该id。我知道可能有其他方法可以找到该行的id,但由于一些更改,网站将有它需要通过使用id来完成 当访问查看器时,它会执行一些RubyonRails语句 <% if user_signed_in? %> <% @att_record = Attendance.new(:user_id => current_user.id, :time_in =>

我试图获取数据库表中新创建的行的id,以便以后使用它。但它不会被传递,它只停留在查看器中。在选项卡或窗口关闭后,我需要该id。我知道可能有其他方法可以找到该行的id,但由于一些更改,网站将有它需要通过使用id来完成

当访问查看器时,它会执行一些RubyonRails语句

<% if user_signed_in? %>
  <% @att_record = Attendance.new(:user_id => current_user.id, :time_in => Time.now) %>
  <% #@attendance_log = @att_record #tried this already, controller doesn't receive it %>
  <%= hidden_field_tag :@get_int, :value => @att_record.id %>
  <% @att_record.save %>

@att_记录就在视图中创建,而get_int和Attention_log则在unload函数中创建。

这里需要考虑的几点:

  • 在视图中创建记录不是一个好的做法。(
    @att_record.save
  • 在hidden_field_标记中,您甚至在创建记录之前就已经找到了值(
    @att_record.id
    )。所以它的值是零
  • 传递属性的值可以在参数中的控制器中找到
  • 上述问题的快速解决方法是: 保存后设置隐藏字段

      <% @att_record.save %>
      <%= hidden_field_tag :attr_record_id, :value => @att_record.id %>
    

    注意:我强烈建议使用适当的控制器流创建记录,而不是在视图中。

    试试。你可以在上面找到更多。尝试使用隐藏的字段标记,但它没有被存储。为了在使用该方法后测试它,我使用print“val={params[:attr_record_id]}”,在params处没有任何结果。我甚至用其他参数测试了它,它们确实得到了显示,但这一个没有。
      <% @att_record.save %>
      <%= hidden_field_tag :attr_record_id, :value => @att_record.id %>
    
    @attendance_log = Attendance.find_by(id: params[:attr_record_id])