通过Rails中的hidden_​​field_tag传递数组

时间:2010-12-22 11:58:17

标签: ruby-on-rails arrays parameters hidden-fields

我确实在SO上发现了这个question,但实际上并没有帮助。

所以,我想通过一个隐藏的字段标签传递一个数组。 截至目前,我的代码是:

<%= hidden_field_tag "article_ids", @articles.map(&:id) %>

这显然不起作用,因为它将id作为字符串传递。

我该怎么做?

4 个答案:

答案 0 :(得分:29)

嗨,也许有更好的解决方案,但你可以试试

<% @articles.map(&:id).each do |id| %>
  <%= hidden_field_tag "article_ids[]", id %>
<% end %>

答案 1 :(得分:1)

您可以尝试将其解析为json:

articles_list = @articles.map(&:id).to_json # gives u: [1,2,3,4,5]
                                            # note that the result is a string instead of an array
article_ids = JSON.parse(articles_list)

或者您可以使用逗号分隔的字符串:

articles_list = @articles.map(&:id).join(",") # gives u: 1,2,3,4,5
                                              # note that this result is a string also
article_ids = articles_list.split(/,/).map(&:to_i)

答案 2 :(得分:1)

以下在Rails 4.1.10中为我工作

<% @your_array.map().each do |array_element| %>
    <%= hidden_field_tag "your_array[]", array_element %>
<% end %>

答案 3 :(得分:0)

在Rails 4上你可以这样做:

@echo off
cls & color 0A & echo.
Mode con cols=70 lines=5
Title Check Startup Registry Keys
Set TmpLogFile=TmpLogkey.txt
Set LogFile=Startup_key_Log.txt
If Exist %TmpLogFile% Del %TmpLogFile%
If Exist %LogFile% Del %LogFile%

Set mykey="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"^
^ "HKCU\Software\Microsoft\Windows\CurrentVersion\Run"^
^ "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"^
^ "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run"^
^ "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run"^
^ "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options"

Echo.
ECHO                 **************************************
ECHO                        Please wait..........
ECHO                 **************************************

For %%K in (%mykey%) Do Call :Check_Key %%K %TmpLogFile%

Cmd /U /C Type %TmpLogFile% > %LogFile%
Start "" %LogFile%
Exit /b
::********************************************
:Check_Key
reg QUERY %1 >nul 2>&1
(
    if %errorlevel% equ 0 ( reg QUERY %1 /s
        ) else ( echo %1 ===^> Not found
    )
) >>%2 2>&1
::********************************************

由于Rails会自动将“[]”附加到字段名称(使用<% @articles.map(&:id).each do |id| %> <%= hidden_field_tag "article_ids", value: id, multiple: true %> <% end %> 时),并且接收表单的控制器会将其视为值数组。