【问题标题】:extra parameter from dropdown passed to controller for new object creation下拉菜单中的额外参数传递给控制器​​以创建新对象
【发布时间】:2014-03-16 13:26:51
【问题描述】:

我有一个来自@Files 的对象(我取出了所有的检查,以使其更短):

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

对于每个 @Files 我想复制 / 和 .create ,但最重要的是,我想添加用户选择的选项:

@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 %>

但我不知道如何将选定的值传递给我的控制器,以便创建我的新 'FileTemp' 对象

提前非常感谢(我已经被屏蔽了好几个星期了..)

附言。最初我打算使用 Ajax 更新该值(无需重新创建另一个对象),但我认为这种方式会更容易。

【问题讨论】:

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


    【解决方案1】:

    我刚刚尝试了一个通过 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

    【讨论】:

    • 感谢这个 krabbi,问题是它不是 form_for(它只是一个 Do 循环)。我遍历我的文件并只想更新一个参数,这就是原因。
    • 嗯,也许我没有得到您的要求,但您通常要求控制器操作。例如,使用链接或表单提交(或任何 javascript 行为)。因此,您必须使用正确的请求创建链接或表单。在那里你必须传递所需的参数。
    猜你喜欢
    • 2020-02-07
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 2021-10-08
    • 1970-01-01
    相关资源
    最近更新 更多