`
open2ye
  • 浏览: 99059 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

Rails 在搜索表单中用 OpenStruct

阅读更多
# in controller

require 'ostruct'

def index
  @search = OpenStruct.new(params[:search])
end


# in view

<% form_for :search, :url => {:action => "index"}, :html => {:method => :get} do |f| %>
  <%= f.text_field :quick %>
  <%= f.submit "Search" %>
<% end %>

简单, 喜欢
分享到:
评论
6 楼 hozaka 2010-02-12  
http://github.com/binarylogic/searchlogic
5 楼 Hooopo 2010-02-05  
引用
def index
  @search = OpenStruct.new(params[:search])
end


还可以在model里用,让model实例继承OpenStruct而不是ActiveRecord::Base..
class Post < OpenStruct
 undef id
 #...
end
4 楼 Hooopo 2010-02-05  
liusong1111 写道
用OpenStruct最大的问题是id方法不会代理到params[:id]上。

可以把object默认id undef掉的..
require 'ostruct'
class OS < OpenStruct;undef id;end

o = OpenStruct.new(:id => 11)
puts o.id#object_id

oo = OS.new(:id => 12)
puts oo.id#real id



3 楼 liusong1111 2010-02-02  
用OpenStruct最大的问题是id方法不会代理到params[:id]上。
2 楼 qichunren 2010-02-02  
form_for必须要一个class实例的参数,通过这个解决了,不错不错。
1 楼 up2u0609 2010-02-02  
刚好注意到这个OpenStruct,就看到这个帖子,这个挺酷的

相关推荐

Global site tag (gtag.js) - Google Analytics