来自下拉列表的额外参数传递给控制器​​以创建新对象

时间:2014-02-17 10:00:43

标签: jquery ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我有一个来自@Files的对象(我拿出了所有的支票,以缩短它):

@idFiles = params[:file_ids]
@Files = File.find(@idFiles)

对于我想复制/和.create的每个@Files,但除此之外,我想添加用户选择的选项:

@Files.each do |fc|
FileTemp.create(:filename => fc.name , :selectedOption => fc.myOption)
 

在我看来,我对@Files的每个元素都有1个(选中)'myOption'值:

<% @Files.each do |f| %>
<td><%= f.name %></td>
<td><%= f.path %></td>
[...]
<%= select_tag f.myOption , options_for_select(f.MultipleOptions.split(";")) %>
<% end %>

但是我无法弄清楚如何将选定的值传递给我的Controller,以便创建我的新'FileTemp'对象

非常感谢(我被封锁了几周......)

PS。最初我的意思是使用Ajax来更新该值(无需重新创建另一个对象),但我认为这样会更容易。

1 个答案:

答案 0 :(得分:0)

我刚尝试了一个通过select_tag传递额外参数的简单示例。

在我的表单中,我只需添加我需要的select_tag调用

<div class="field">
  <%= select_tag :any_name, options_for_select([1, 2]) %>
</div>

如果我现在提交表单,您可以在开发日志中看到传递的参数。

Parameters:
{ ... "any_name" => "1", "product" => { ... }, "commit"=>"Create Product" }

现在我在请求的控制器操作中得到了params [:any_name]。

您必须决定什么符合您的需求。进一步调查here in Rails API