0

Я пытаюсь сделать «дружбу» между моделью программы и учеником. Я делаю это с has_many: через модель отношений. В контроллере отношений я создал действие, которое должно перенаправить другую страницу после дружбы.Render page with rails

Итак, в Студенческом представлении у меня есть link_to запросить дружбу. Я подумал, что смогу войти на страницу Student show, но вместо этого перенаправляет меня из индекса Student, когда я пытаюсь войти в представление Student show на другую страницу. Поэтому я фактически не могу войти в Student show, он просто перенаправляет меня на другую страницу.

Почему это происходит? Я хочу, чтобы переадресовать с просмотра Student, после того, как я нажимаю «запрос дружбы» на другую страницу модели.

Стьюдента show.html.erb

<%= link_to "Request friendship with #{@student.name}", 
{ :controller => "relationship", :action => "create", 
:id => @student.name }, 
:confirm => "Send friend request to #{@student.name}?" %> 

route.rb

match "/students/:id" => "relationships#create" 

ОБНОВЛЕНО

Контроллер Отношения

def create 
    Relationship.request(@prog, @student) 
    flash[:notice] = "Friend request sent." 
    redirect_to prog_url 
end 

рейк маршруты

relationships_create GET /relationships/create(.:format) relationships#create 
    relationships_destroy GET /relationships/destroy(.:format) relationships#destroy 
         /students/:id(.:format)   relationships#create 
    relationships GET /relationships(.:format)   relationships#index 
        POST /relationships(.:format)   relationships#create 
new_relationship GET /relationships/new(.:format)  relationships#new 
edit_relationship GET /relationships/:id/edit(.:format) relationships#edit 
    relationship GET /relationships/:id(.:format)  relationships#show 
        PUT /relationships/:id(.:format)  relationships#update 
        DELETE /relationships/:id(.:format)  relationships#destroy 
     students GET /students(.:format)    students#index 
        POST /students(.:format)    students#create 
     new_student GET /students/new(.:format)   students#new 
    edit_student GET /students/:id/edit(.:format)  students#edit 
      student GET /students/:id(.:format)   students#show 
        PUT /students/:id(.:format)   students#update 
        DELETE /students/:id(.:format)   students#destroy 
      progs GET /progs(.:format)     progs#index 
        POST /progs(.:format)     progs#create 
     new_prog GET /progs/new(.:format)    progs#new 
     edit_prog GET /progs/:id/edit(.:format)   progs#edit 
      prog GET /progs/:id(.:format)    progs#show 
        PUT /progs/:id(.:format)    progs#update 
        DELETE /progs/:id(.:format)    progs#destroy 
+0

опубликуйте свой контроллер и сообщите нам, где вы хотите перенаправить – Zippie

+0

Я хочу, чтобы он был перенаправлен на страницу индекса модели prog – 2013-04-07 00:22:58

+0

вы можете запускать маршруты рейка и публиковать результат? – Zippie

ответ

1

Не уверен, что я полностью понимаю, что @prog должно быть, но это путь

def create 
    @student = Student.find_by_id(params[:id]) 
    @prog = Programme.find_by_id(params[:prog]) #You need to fill this in 
    Relationship.request(@prog, @student) 
    flash[:notice] = "Friend request sent." 
    redirect_to @student # Or @prog, or whatever you'd like 
end 

Вы, вероятно, нужно будет пройти prog.id, а также к контроллеру что-то вроде:

match "/students/:id/:prog" => "relationships#create"

и добавить

<%= link_to "Request friendship with #{@student.name}", 
{ :controller => "relationship", :action => "create", 
:id => @student.name, :prog => @student.current_programme }, 
# I don't know how you differ programmes, you'd have to work this one out 
:confirm => "Send friend request to #{@student.name}?" %>