neo*_*neo 3 ruby ruby-on-rails ransack
我正在使用Ransack和Rails 3.
我的观点:
<%= search_form_for @search do |f| %>
<%= f.text_field :first_name_or_last_name_or_company_cont, :style => 'width:150px;padding-top:6px;' %><p class="button">
<%= f.submit "Search by name or company" %></p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我的架构:
create_table "users", :force => true do |t|
t.string "first_name",
t.string "last_name"
Run Code Online (Sandbox Code Playgroud)
在用户模型上我有:
def full_name
"#{self.first_name} #{self.last_name}"
end
Run Code Online (Sandbox Code Playgroud)
在控制台上工作.
如果我有一个用户first_name = "Foo",last_name = "Bar"当我与任何一个搜索,我得到的结果如预期.
当我搜索时full_name = "Foo Bar",我没有得到任何结果.
我尝试将我的text_field更改为Ransack:
<%= f.text_field :first_name_or_last_name_or_company_or_full_name_cont
Run Code Online (Sandbox Code Playgroud)
我明白了 first_name_or_last_name_or_company_or_full_name_cont is undefined
有没有一种快速解决方法,而无需在我的用户表上添加另一列full_name?
还:
7: def index
8: search_params = params[:q]
=> 9: binding.pry
[1] pry(#<UsersController>)> search_params
=> {"first_name_or_last_name_or_company_cont"=>"Foo Bar"}
Run Code Online (Sandbox Code Playgroud)
我想我可以在这里分割键值来搜索名字.
你必须使用Ransacker.在您的User模型中添加:
ransacker :full_name do |parent|
Arel::Nodes::InfixOperation.new('||',
parent.table[:first_name], parent.table[:last_name])
end
Run Code Online (Sandbox Code Playgroud)
您可以查看Ransack GitHub wiki以获取更多示例.
| 归档时间: |
|
| 查看次数: |
664 次 |
| 最近记录: |