将对象从轨道中的选择框传递到控制器

时间:2011-09-06 19:58:18

标签: ruby-on-rails

我有一个显示搜索功能结果的选择框(结果是不同的事件)。用户可以选择查看事件的详细信息或选择要使用的事件。由于我已经拥有数据库中的对象,我想将所选对象传递给正确的控制器操作。当我尝试这样做时,对象作为字符串传递给控制器​​。我的代码在下面

<h2>Search Results</h2>

<p>
        <%= form_tag :action => :event_options %>
        <p><select name="event" size = 5>
        <%@events.each do |event|%>    
            <option value="<%= event%>"><%=event.name%></option> 
        <%end%>
        </select></p>
        <%= submit_tag "Event Details", :name=>"details" %>
        <%= submit_tag "Select Event", :name=>"select" %>

    </form> 

我的控制器的事件选项操作如下:

def event_options
  @event = params[:event]

  if params['details']
    redirect_to :action=>:view_event_detail, :event=>@event
  else
    redirect_to :action=>:select_event
  end

我只想将整个事件对象传递到event_options操作,然后根据用户点击的提交按钮发送到操作。

-Thanks

1 个答案:

答案 0 :(得分:0)

选择选项的值不能是对象。它不知道对象是什么。它只需要一个字符串,如“1”或“是”或其他东西。所以,当你输入event时,它会对它进行to_s。

您应该使用event.id作为值,并在控制器中执行Event.find抓取事件对象并使用它。