[英]rails- Pass infomation to a controller based on url
我有一个用于“生产”的控制器,如果转到localhost/productions
您会看到一个索引页面,您可以单击“显示”并查看该特定生产的显示页面。 每个产品都有一个唯一的ID,例如036ea872f9011a7c
,我希望我的用户能够向产品中添加项目,如下所示:
localhost/productions/036ea872f9011a7c/fixtures/add
localhost/productions/036ea872f9011a7c/positions/add
localhost/productions/036ea872f9011a7c/dimmers/add
localhost/productions/036ea872f9011a7c/channels/add
localhost/productions/036ea872f9011a7c/etc/add
您应该使用以下必要参数构建一条路线:
假设我们有分配给项目的任务
模型project.rb:
class Project < ActiveRecord::Base
has_many :tasks, through: :project_task
end
模型task.rb
class Task < ActiveRecord::Base
has_many :projects, through: :project_task
end
的routes.rb
...
resources :projects do
member do
get 'affect_task/:task_id', action: 'affect_task', as: :affect_task
end
end
项目/ show.haml
= link_to "task_name", affect_task_project_path(task_id: @task_id, project_id: @project_id)
controller.rb
...
def affect_task
...
CollaboratorTask.create(task_id: params[:task_id], project_id: params[:project_id])
...
end
...
当然,这是一个示例,您可以理解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.