저는 아직 Ruby on Rails에 익숙하지 않고 한 지점에 머물러 있습니다.Ruby on Rails 업데이트 방법이 우연히 .. 왜 호출됩니까?
내 데이터베이스에는 교사 및 과정 모델이 포함되어 있습니다. 그것들은 has_and_belongs_to_many Association과 관련이 있습니다 (변경하지 않아야 함).
과정 상세보기 :
<p> Teacher:
<%= form_tag url_for(controller: 'courses', action: 'add_teacher') ,method: 'put' do%>
<%= select_tag :teacher, options_for_select(Teacher.all.collect {|t| [t._name, t.id]})%>
<%= hidden_field_tag(:course, value = @course.id) %>
<%= submit_tag 'hinzufügen' %>
<%end %>
<% end %></p>
Course_Controller : 내 코드의 부분이었다
def add_teacher
@course = Course.find(params[:course])
@teacher = Teacher.find(params[:teacher]) unless params[:teacher].nil?
@course.teachers << @teacher
redirect_to action: 'show'
end
def update
redirect_to action: 'add_teacher', course: params[:course], teacher: params[:teacher]
end
. 나는 라우팅 문제 또는 다른 것이 있는지 정말로 모른다. 함수 add_teacher가 호출되기 전에 함수 업데이트가 호출되는 이유를 모르겠다. 처음에는 레일스가 기존 레코드를 변경하고 싶다는 사실을 알았 기 때문에 변경 (@ course.teachers < < @teacher)이 발생하면 "update"함수가 호출됩니다. 하지만 그는 먼저 update 함수를 호출하고 add_teacher로 리디렉션되는지 여부는 중요하지 않습니다. 어쨌든 함수를 호출합니다. 왜?
이제 올바른 함수를 사용하여 add_teacher로 리디렉션하는 update 함수를 사용하고 있습니다. "update"기능이 자동으로 호출되는 이유와 경로를 올바르게 설정하는 방법에 대한 답변이 더 좋을 수도 있습니다.
도움을 많이 주셔서 감사합니다. 나쁜 영어로 죄송합니다.
안녕
업데이트 : 나는 그가 어쨌든 리디렉션 확신했다,하지만 난 그것을 주석과 지금은 아무것도되지 좋아.
내 경로는 다음과 같습니다 :
get 'courses/add_teacher'
get 'courses/update'
resources :students, :forms, :votes, :courses, :years, :teachers
과 더 많은이
경로 모양은 – Iceman
입니다. REST 모델을 준수하려면'resources : courses'와 그 안에'resources : teachers'가 있어야합니다. 그러면 교사와 코스를 연관시킬 수 있습니다. – tadman
@tadman ok, 오히려이 기능을 다음과 같은 경로에 매핑해야합니다 :'post '/ : courses/: teachers''? 나는 라우팅에 익숙하다. ^^ – homior