2013-11-30 1 views
0

шлет маршруты, как это:Попутных два параметр не работает

photos_patient_path(@patient, {:photoid => f.id }) 

создает:

http://localhost:3000/patients/79799/photos?photoid=6 

В моем контроллере рельсов у меня есть:

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

Какие значения вы видите в 'params []'? – HM1

+0

{"page" => "2", "photoid" => "15", "action" => "photos", "controller" => "patient", "id" => "79799"} –

+0

В моем первая ссылка: photoid была первой в params –

ответ

1

Попробуйте использовать конкретный маршрут для отдельных фотографий, отличных от «фотографий» путь, я имею в виду, некоторые пути, как:

get 'patients/:patient_id/photos/:photo_id', to: 'patients#patient_photo', as: 'patient_photo' 

теперь вам не нужен, если на ваш взгляд

и в вашем контроллере вы будете иметь

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 

Я предполагаю, что будет исправить вашу проблему и ваш URLs будет выглядеть лучше

EDIT: добавлен названный маршрут

и создать путь с patient_photo_path (@patient, photo_id)

EDIT 2: вы можете реализовать так резервное поведение на before_filter если @ patient.photos.find (params [: photo_id]) - это нуль для отображения индекса или чего-то подобного

Смежные вопросы