레일스의 올바른 용어를 모르는 것 같지만, 찾고 있습니다 ....레일에 자식 모델 만들기 (belongs_to) 부모 ID 미리 설정
Project
모델 has_many Task
및 Task
belongs_to는 Project
입니다.
내 routes.rb
이
resources :projects
resources :tasks
내가/편집/생성 Projects
가 잘 수정하고, 나는 또한 Tasks
편집 할 수있다 ...하지만 난 새로운 Task
을 만드는 방법을 해결할 수없는 것, 그렇게 할 때 올바른 Project
을 할당하십시오.
내 Project
페이지 (예 :/projects/2)에는/task/new로 이동하는 작업 추가 링크가 있으므로 연결이 끊어집니다. Tasks
은 일단 생성되면 ID로 고유하게 식별 할 수 있기 때문에 중첩 된 리소스를 만들고 싶지 않습니다. 앞으로는 다른 모델도 있습니다.
빠른 수정본이 있습니까?
편집 글쎄, 나는 이것을 해결할 수 있었다. 그것은 추악하다. 그리고 그것은 끔찍한 것이고, 왜 그런 식으로되어야하는지 잘 모르겠다.
내 경로 :
resources :projects do
resources :tasks, :only => [:new]
end
resources :tasks, :except => [:new]
내 작업 컨트롤러 :
def new
@project = Project.find(params[:project_id])
@task = @project.tasks.build
end
# Process the form for creating a new task.
def create
@project = Project.find(params[:task][:project_id])
@task = @project.tasks.build(params[:task])
if @task.save
flash[:success] = 'Task created.'
redirect_to project_path(@project)
else
render 'new'
end
end
그리고 내 작업 형태 :
<%= semantic_form_for @task do |f| %>
<%= render 'shared/form_message', :object => f.object %>
<%= f.inputs do %>
<%= f.input :name %>
<%= f.input :project %>
<% end %>
<ul class="formActions">
<li class="list"><%= link_to 'Back to list', project_path(@task.project) %></li>
<li><%= f.submit "Save" %></li>
</ul>
<% end %>
나는에서 프로젝트 상자를 넣어 가지고 싶지 않았다 양식, 그리고 난 아직도 내가 왜 해야하는지, 그리고 내가 왜 걸릴 필요가 확실하지 않다 :중첩 된 경로 중. 그것은 또한 일반적인 일을 위해서 꽤 힘들어 보이지만 작동합니다, 그래서 ... 나는 그것이 모두 좋은 것 같아요.
흠, 내 경로가 변경되었지만 여전히 문제가 있습니다. TaskController를 변경하여 부모 프로젝트를 통해 Task를 생성하지만 여전히 작동하지 않습니다. : – sevenseacat
이런 종류의 일을하는 자습서를 알고 계시겠습니까? – sevenseacat
http://railscasts.com/episodes/139-nested-resources를 보시길 바랍니다. – aNoble