我看到了一张 table :
#view
<%= form_tag save_table_path do %>
<table>
<% @channel_name_body.values.max_by(&:size).size.times do |i| %>
<tr class="border">
<% @channel_name_body.values.map { |a| a[i] }.each do |value| %>
<td contenteditable class="border light_green"><%= value %></td>
<% end %>
</tr>
<% end %>
</table>
<%= submit_tag "save",:class => "btn btn-primary offset4" %>
<% end %>
我不知道接下来要做什么将表中所有单元格的值传递给 Controller ,例如:
#controller
def save_table
@table=params[:table] #or @row1=params[:row1]... or @col1=params[:col1]....
end
编辑:我找到了解决这个问题的方法,它必须使用js。
我不想使用js,如果我更改为 <%= text_field_tag :cell, value %> 如何获取表中所有单元格的值?
最佳答案
我认为您对如何处理 Rails(或任何后端系统)中的数据感到困惑
HTML
HTML是一种标记语言;这意味着如果你给它特定的代码,它就会把各种元素放到页面上。 <table>
标签是这些元素之一,与应用程序的 Controller 端功能无关
Controller 参数
HTML 表单参数与 form
直接相关(没有别的)
在 Rails 中,您将得到如下排序的 params 哈希:
params[:form_name][:input_name]
您的代码
从您所显示的内容来看,您似乎缺少几个部分
首先,你需要input
元素(填充参数)。目前,您拥有:
<td contenteditable class="border light_green"><%= value %></td>
这不会创建任何参数,因为它不是输入元素。它只是在屏幕上输出的一个值。你需要的是这样的:
<td contenteditable class="border light_green"><%= text_field_tag :cell, :value => value %></td>
通过添加这些输入,Rails 能够使用它们的值填充 params 哈希,然后您可以像这样从 Controller 访问这些值:
def save
@table = params[:form_name][:cell][0]
end
希望这有帮助吗?
关于ruby-on-rails - 将html表的值提交给 Controller ruby中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20628964/