我像这样扩展我的路线:
photos_patient_path(@patient, {:photoid => f.id })
创建:
http://localhost:3000/patients/79799/photos?photoid=6
在我的rails控制器中,我有:
def photos
@photos = @patient.photos.paginate(:page => params[:page], :per_page => 8)
@photo = @photos.find(params[:photoid]) rescue nil
@termins = @patient.termins.where("date >= ?", Date.today)
render :show
end
在视图中:
<% if @photo == nil %>
<%= render 'patient_photos' %>
<% else %>
<%= render 'patient_photo' %>
<% end %>
上面的代码有效,现在我尝试添加另一个参数:
photos_patient_path(@patient, { :page => params[:page], :photoid => f.id })
创建:
http://localhost:3000/patients/79799/photos?page=2&photoid=15
但现在,在我看来,我打电话:
<%= params[:photoid] %>
它没有返回或更好地说没有!为什么?感谢
答案 0 :(得分:1)
尝试使用不同于“照片”路径的单张照片的特定路线,我的意思是,有些路线如下:
get 'patients/:patient_id/photos/:photo_id', to: 'patients#patient_photo', as: 'patient_photo'
现在您在视图中不需要if
在您的控制器中,您将拥有
def photos
@photos = @patient.photos.paginate(:page => params[:page], :per_page => 8)
@termins = @patient.termins.where("date >= ?", Date.today)
end
def patient_photo
@photo = @patient.photos.find(params[:photo_id])
end
我想这会解决您的问题,您的网址会更好看
编辑:添加了一条命名路线
并使用patient_photo_path(@patient,photo_id)
创建路径编辑2:如果@ patient.photos.find(params [:photo_id])为零以呈现索引或类似内容,您可能希望在before_filter上实现这样的回退行为