这可能很简单,但我已经尝试过一些东西,却找不到让它工作的方法。
我想使用form_for
为了使它更具体,我在MyClass的特定实例的显示页面上,我想将字符串“yay”传递给控制器,然后随意输入。也许可以将其作为flash消息传回页面,或者修改内容然后将其存储为MyClass实例的字段。
我可以编写包含没有prbolems的MyClass属性的form_for,但似乎其他字段会抛出错误。
如何编写form_for以便我可以完成上述两种情况之一?
def update
@my_class = MyClass.find(params[:id])
flash[:notice] = "This works" # but what can I write in a form for for it to be a variable that's passed in?
#rest of the update
end
答案 0 :(得分:1)
将表单构建器实例(如f.text_field)单元化的表单帮助程序需要一个有效的模型属性,以便它可以生成相应的id并使用模型中的数据填充该字段。如果您希望表单字段与模型属性不对应,请不要使用标准f.text_field,而是使用:
<%= text_field_tag 'my_custom_tag' %>
应该呈现如下内容:
<input type="text" id="my_custom_tag"></input>
提交表单时,输入的值将显示在params哈希中,密钥为:my_custom_tag。
我希望这会有所帮助。
答案 1 :(得分:0)
您的表单中可能需要一个hidden_field:
http://apidock.com/rails/ActionView/Helpers/FormHelper/hidden_field
但是,如果你希望保存某种状态,这似乎就是你想要的,你就永远不会使用它。相反,您将使用会话。原因是客户端可以操纵隐藏字段,因此可以轻松覆盖安全性。
答案 2 :(得分:0)
attr_accessor :foo
添加到模型中即可。
在控制器中,您可以使用bar = params[:foo]
访问它,并随意执行。