問題情境
我的routes設置如下:
Rails.application.routes.draw do resources :projects do resources :real_lives end root "projects#index" end
controller設置如下:
def new @project = Project.find(params[:project_id]) @real_life = @project.real_lives.new() end
新增real_life時,在new.html.erb使用simple_form_for 發生Error,問題程式如:
<%= form_for @real_life do |f| %> <%= f.label :schedule_type %> <%= f.text_field :schedule_type %> <% end %>
undefined method 'xxxx_path'的 錯誤訊息
問題原因
按Rails的設計 real_lives / new.html.erb對應的路徑應該是real_lives_path,但是因為Project與Real_Life資料結構的關係,所以在routes的設置,real_lives並不是獨立的路由,所以並不會有real_lives_path的路徑存在,錯誤的原因在此。所以必須在form_for或是simple_form_for指定url。
問題處理
把 <%= form_for @real_life do |f| %> 改為 <%= form_for @real_life, url: project_real_lives_path do |f| %>
沒有留言:
張貼留言