导轨2.3.11条件格式输入字段类型
我想在一种情况下使用text_field输入数据,否则使用选择框。现在,我的代码如下所示:
的意见/海报/ new.html.erb
<% form_for @poster, :html => {:multipart => true} do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :image %> - We're not going to enlarge it for you, so please upload the biggest copy you can!<br />
<%= f.file_field :image %><br />
</p>
<p>
<% if current_user.admin? && params[:event_id] && !current_user.events.find_by_id(params[:event_id]) && Event.find_by_id(params[:event_id]) %>
<%= f.label "Event ID" %><br />
<%= f.text_field :event_id, :value => params[:event_id] %>
<% else %>
<%= f.label :event_id %><br />
<%= f.select :event_id, @events, :selected => params[:event_id].to_i %>
<% end %>
</p>
<p>
<%= f.submit 'Create' %>
</p>
<% end %>
控制器/ posters_controller.rb
def new
@poster = Poster.new
current_user ||= User.find_by_id session[:user_id]
@events = [["Don't attach to an event", '']]
current_user.events.each {|event| @events << [event.title, event.id]}
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @poster }
end
end
错误消息: http://cl1p.net/halp
如何为同一个参数使用两种不同类型的表单输入字段(但每个字符在不同的条件下,而不是同时发生)?
更新:我认为问题源于Rails将先前提交的信息放回其各自输入字段的问题。这就解释了为什么当通过所有验证测试的文件(即PNG小于3 MB)不会引发发脾气,但是在没有任何内容(或任何不符合该条件的内容)被附加时会崩溃。
当我进一步研究它时,它与文件的附件没有任何直接关系 - 这只是决定创建新海报是成功的决定因素......还是返回到“新”页面进行更正,导致错误。 新的'f.select'会不会自动选择ID作为URL参数传递的事件? – Benjin
这没有奏效。通过将Rails代码分成多行,我确定意外的nil与'f.select'旁边的':event_id'有关。 – Benjin
您没有提到event_id是作为URL参数传递的,但是在这种情况下,f.select的确会自动选择事件ID。 – Jaryl