论坛首页 编程语言技术论坛

Rails 在搜索表单中用 OpenStruct

浏览 2950 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-02-01  
# 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 %>

简单, 喜欢
   发表时间:2010-02-02  
刚好注意到这个OpenStruct,就看到这个帖子,这个挺酷的
0 请登录后投票
   发表时间:2010-02-02  
form_for必须要一个class实例的参数,通过这个解决了,不错不错。
0 请登录后投票
   发表时间:2010-02-02  
用OpenStruct最大的问题是id方法不会代理到params[:id]上。
0 请登录后投票
   发表时间:2010-02-05   最后修改: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



0 请登录后投票
   发表时间:2010-02-05  
引用
def index
  @search = OpenStruct.new(params[:search])
end


还可以在model里用,让model实例继承OpenStruct而不是ActiveRecord::Base..
class Post < OpenStruct
 undef id
 #...
end
0 请登录后投票
   发表时间:2010-02-12  
http://github.com/binarylogic/searchlogic
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics