次のようなルートがあります。
resources :projects do
resources :tasks
end
これにより、URL/projects/14/tasks/3 のような URL が得られます。
モデルは次のことを定義します。
project has_many :tasks
task belongs_to :project
現在、ユーザーがタスクへのリンクをクリックすると、プロジェクトの表示ビュー内からリモート => true リンクを介して、tasks#show を div にロードしています。これはうまくいっています。
#tasks/show.js.erb
$('#task_content').html("<%= j render(partial: 'tasks/single', locals: { t: @task }) %>");
#tasks/_single.html.erb
<%= t.content %>
問題は、ユーザーが URL/projects/14/tasks/3 にアクセスして、タスクをプロジェクト ビューの div に自動的にロードできるようにすることです。
基本的には、URL/projects/14/tasks/3
実際に renderURL/projects/14
して jquery を呼び出す方法を見つける必要があります$('a#task_<%= task.id %>').click()
ビューにこの種の動作を認識させる方法を理解できないようです。誰かが私を正しい方向に向けることができますか?
ありがとう!!!
編集
#TasksController
def show
@task = Task.find(params[:id])
respond_to do |format|
format.js
end
end
#ProjectsController
def show
@project = Project.find(params[:id])
respond_to do |format|
format.html # show.html.erb
end
end
Projects#show には 2 つの主要な要素があります。
- task_<%= task.id %> の ID を持つリンク
- タスク コンテンツをロードする div (div#task_content)