我還是Ruby on Rails的新手,並且我正在一點關注。Ruby on Rails更新方法被意外調用..爲什麼?
我的數據庫包含教師和課程模型。它們與has_and_belongs_to_many關聯關聯(目前不應該更改)。
課程詳情查看:
<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被調用之前調用函數更新。首先,我想可能rails會意識到我想更改現有的記錄,所以當更改(@ course.teachers < < @teacher)「正在發生」時會調用函數「update」。但他首先調用update函數,不管是否重定向到add_teacher,他都會調用函數!爲什麼?
現在我使用更新函數重定向到add_teacher與正確的參數。 可能有人對我有更好的解決方案或答案爲什麼自動調用函數'update'以及如何正確設置路線?
非常感謝您的幫助和對我的英語不好!
再見
更新: 好,我確信他重定向無論如何,但我評論它,現在他沒有做任何事情。
我的路線是這樣的:
get 'courses/add_teacher'
get 'courses/update'
resources :students, :forms, :votes, :courses, :years, :teachers
和更多像這樣的
你的路線是什麼樣子 – Iceman
爲了符合REST模型,你應該有'資源:課程',裏面有'資源:教師',所以你可以把教師和課程聯繫起來。 – tadman
@tadman好吧,我應該將函數映射到這樣的路線:'post'/:courses /:teachers''?我是新來的路由以及^^ – homior