【问题标题】:newbie question: Why the selected value from dropdown menu does not pass to my controller?新手问题:为什么从下拉菜单中选择的值不会传递给我的控制器?
【发布时间】:2011-01-13 16:07:18
【问题描述】:

我有一个模型“MyObject”,其中包含一个名为“color”的属性,该属性值是从 COLORS=['red','black','yellow'] 列表中选择的。在我的应用程序中,我从数据库中获取了一个“MyObject”实例,并将其作为一行显示在页面上。我在 rails 3 中使用了“选择”表单助手,并允许用户从下拉菜单中选择颜色。

我是这样使用表单助手的:

select("myobject", COLORS, { :include_blank => false }),

在视图页面上,我成功将颜色作为下拉菜单,默认值为选中的颜色。

但是,当我从菜单中选择另一种颜色并按下保存按钮时,传递给我的控制器的“myobject”始终保持默认颜色值而不是选定的颜色值,为什么?? p>

我使用button_to("save", myobject_path(myobject), :method=>:put) 将对象传递给我的控制器。

在我的控制器中,更新方法:

class MyobjectsController < ApplicationController
...
def update

     @myobject = myobject.find(params[:id])

     if @myobject.update_attributes(params[:myobject])
      puts @myobject.color #always get default value
      redirect_to myobject_path
    else
      redirect_to myobject_path
    end
  end
...
end

谁能解释一下为什么我总是得到默认颜色值而不是选定的颜色值?

【问题讨论】:

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


    【解决方案1】:

    没有看到完整的视图代码,我不确定这一点,但很可能是您的包含 &lt;select&gt; 的表单实际上并未被提交,而 button_to 只是创建自己的表单并提交。您应该将myobject_path(myobject), :method =&gt; :put 放在表单本身上,而不是提交按钮上。并且不要为此使用button_to,使用submit_tag 或其他东西。

    【讨论】:

    • 嗨,我没有使用表单,因为我只有我的对象的颜色属性需要以下拉菜单样式显示。我的对象实例显示在表格行中,而不是表格中。
    • 是的,您可以(并且应该)为单个属性使用表单。表单不必具有任何特定的外观,因此您可以在其中添加任意数量的内容。
    猜你喜欢
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 2021-10-08
    • 2019-02-02
    • 1970-01-01
    相关资源
    最近更新 更多