0

私は、モデル プログラムと学生の間に「友情」を作ろうとしています。私は has_many :through model Relationship でそれを行います。Relationship コントローラーには create アクションがあり、友情が発生した後に別のページをリダイレクトする必要があります。

したがって、学生のショー ビューでは、link_to でフレンドシップをリクエストできます。生徒のショーページに入ることができると思っていましたが、生徒のショービューに入ろうとすると、生徒のインデックスから別のページにリダイレクトされます。そのため、実際には学生ショーに入ることができず、他のページにリダイレクトされるだけです。

なぜそれが起こっているのですか?「フレンドシップをリクエスト」をクリックした後、生徒のショー ビューから他のモデル ページにリダイレクトするようにしたいです。

学生 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
4

1 に答える 1

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}?" %>
于 2013-04-07T09:05:07.190 に答える