如何从视图中传递布尔属性的哈希参数?

时间:2013-03-31 10:01:33

标签: ruby-on-rails-3

我正在使用Meta-search Gem通过以下控制器操作从表中搜索。我正在使用Rails版本3.2.9。

class FeedEntriesController < ApplicationController
  def index
    @search = FeedEntry.search(params[:is_star])
    @feed_entries = @search.page(params[:page])
    @app_keys = AppKey.all
  end
end

feed_entries表包含is_star:boolean属性。所以,我只想使用is_star == trueparams[:is_star]将哈希参数form_for传递到link_to视图中。我尝试使用以下方式。

In Views/feed_entries/index.html.erb

<%= link_to "Stared", {:controller => "feed_entries", :action => "index", :is_star => true }%>

但上面的方法现在已经工作了,所以我决定以下面的方式使用form_for,

<%= form_for(@is_star) do |f|%>
    <%= f.hidden_field :is_star_is_true %>
    <%= f.submit "Search" %>
<% end %>

但是,没有任何工作,请有人帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

当作为字符串传递时,

truefalse在布尔列中使用时被解析为它们的truthy值。对于0,1,'0'和'1'

也是如此
>> m = Model.new
>> m.active = 'false'
>> m.active? # false
>> m.active = 'true'
>> m.active? # true

知道这一点,你可以传递'true'作为hidden_field

的值
<%= f.hidden_field :is_start, value: 'true' %>

答案 1 :(得分:0)

您可以使用<%=params[:is_start] = 1 %>之类的内容传递表单所在的视图中父级的值。我不确定如何设置应用程序的布局。还要确保attr_accessible :is_start

更新:我可能已经理解你的问题了。所以试试这个

<%= f.hidden_field :is_star, value: 'true' %>

或者你可以有一个单选按钮?

<%= f.radio_button :is_star, value: 'true' %>