Есть Project и Task и соответственно P has_many T. С другой стороны -
таск может быть и не заассигнен на проект. Теоретически все просто.
Есть рауты
map.resources :projects, :except => "show" do |project|
project.resources :tasks
end
map.connect "projects/:project_id", :controller => "tasks", :action
=> "index"
map.resources :tasks
тоже все вроде красиво. На всех страницах Task-вьюх, присутствует
ссылка на new_task_path, edit_task_path итд и таски при добавлении не
ассигнятся на проект. А хочется, чтобы со страницы проекта - таск
ассигнился на проект, а с основной страницы тасков - чтобы они просто
складировались для дальнейшего раскидывания по проектам при
необходимости. А вот теперь вопрос - как красиво (возможно)
переопределить рауты, не проверять каждый раз присутствие
параметра :project_id и в случае его наличия - делать
new_project_task_path, а в случае отсутствия - new_task_path?
Еще можно определить свои general_task_path. По сути *_path и *_url -
это обычные переменные. Значение оных можно определять заранее, в
зависимости от наличия project_id
А вообще определи таски без проекта, как таски, привязанные к проекту
"проект для незаасигненых тасков".
On Jul 19, 10:57 am, Alexey Poimtsev <a...@alec-c4.com> wrote:
On 19 июл, 12:37, Dmitry Zhmurko <zhmu...@gmail.com> wrote:
> вероятно, нужен параметр :shallow в роутахhttp://guides.rubyonrails.org/routing.html
def general_new_task_path
params[:project_id].nil? ? new_task_path : new_project_task_path
end
вот я и ищу способ сделать это красиво :)
polymorphic_url([@project, @task], :action => 'new')
On 19 июл, 14:01, Alex Grigorovich <alex.grigorov...@gmail.com> wrote:
> 2010/7/19 Alexey Poimtsev <a...@alec-c4.com>:
class TasksController < InheritedResources::Base
belongs_to :project, :optional => true # <<= при наличии
params[:project_id] определит @project и будет использовать
@project.tasks.find вместо Task.find etc.
end
теперь во views new_resource_url будет либо /tasks/new либо /
projects/.../tasks/new
--
Vitaly Kushner
http://twitter.com/vkushner
Founder, Astrails Ltd. http://astrails.com/
Check out our blog: http://blog.astrails.com/
On 20 июл, 02:28, Vitaly Kushner <vita...@gmail.com> wrote:
> если юзать InheritedResources то resource_url будет учитывать текущий
> "parent"
> что то вроде:
>
> class TasksController < InheritedResources::Base
> belongs_to :project, :optional => true # <<= при наличии
> params[:project_id] определит @project и будет использовать
> @project.tasks.find вместо Task.find etc.
> end
>
> теперь во views new_resource_url будет либо /tasks/new либо /
> projects/.../tasks/new
>
> --
> Vitaly Kushnerhttp://twitter.com/vkushner
> Founder, Astrails Ltd.http://astrails.com/