Skip to content

Commit 57ae3db

Browse files
committed
Fixed issue #47
1 parent a66b290 commit 57ae3db

File tree

6 files changed

+13
-11
lines changed

6 files changed

+13
-11
lines changed

app/controllers/api/v1/talks_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class TalksController < ApplicationController
55
respond_to :json
66

77
def show
8-
talk = Talk.find_by(slug: params[:slug])
8+
talk = Talk.joins(:conference).where(conferences: {slug: params[:conference_slug]}).find_by(slug: params[:slug])
99
x = {
1010
title: talk.title,
1111
slug: talk.slug,

app/javascript/components/Conference.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
<section class="talks-grid">
5151
<article class="talk" v-for="talk in conference.talks" :key="talk.id">
5252
<div class="video">
53-
<router-link :to="{ name: 'Talk', params: { slug: talk.slug } }">
53+
<router-link :to="{ name: 'Talk', params: { conference_slug: conference.slug, talk_slug: talk.slug } }">
5454
<img :alt="talk.title" :src="talk.video_thumbnail" :title="talk.title">
5555
</router-link>
5656
</div>
@@ -78,7 +78,7 @@
7878
>{{ speaker.name }}</router-link>
7979
</p>
8080
<h1 class="title">
81-
<router-link :to="{ name: 'Talk', params: { slug: talk.slug } }">{{ talk.title }}</router-link>
81+
<router-link :to="{ name: 'Talk', params: { conference_slug: conference.slug, talk_slug: talk.slug } }">{{ talk.title }}</router-link>
8282
</h1>
8383
</div>
8484
</header>

app/javascript/components/Speaker.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<section class="talks-grid">
2020
<article class="talk" v-for="talk in speaker.talks" :key="talk.slug">
2121
<div class="video">
22-
<router-link :to="{ name: 'Talk', params: { slug: talk.slug } }">
22+
<router-link :to="{ name: 'Talk', params: { conference_slug: talk.conference.slug, talk_slug: talk.slug } }">
2323
<img :alt="talk.title" :src="talk.video_thumbnail" :title="talk.title">
2424
</router-link>
2525
</div>
@@ -41,7 +41,7 @@
4141
>{{ talk.conference.title }}</router-link>
4242
</p>
4343
<h1 class="title">
44-
<router-link :to="{ name: 'Talk', params: { slug: talk.slug } }">{{ talk.title }}</router-link>
44+
<router-link :to="{ name: 'Talk', params: { conference_slug: talk.conference.slug, talk_slug: talk.slug } }">{{ talk.title }}</router-link>
4545
</h1>
4646
</div>
4747
</header>

app/javascript/components/Talk.vue

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,11 @@ export default {
6060
};
6161
},
6262
created() {
63-
var slug = this.$route.params.slug;
64-
axios.get("/api/v1/talks/" + slug).then(response => {
65-
this.talk = response.data;
63+
var conference_slug = this.$route.params.conference_slug;
64+
var talk_slug = this.$route.params.talk_slug;
6665
66+
axios.get("/api/v1/conferences/" + conference_slug + "/talks/" + talk_slug).then(response => {
67+
this.talk = response.data;
6768
6869
setTimeout(function(){
6970
new Carousel({

app/javascript/router.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export default new Router({
4242
component: Speaker
4343
},
4444
{
45-
path: '/talks/:slug',
45+
path: '/conferences/:conference_slug/talks/:talk_slug',
4646
name: 'Talk',
4747
component: Talk
4848
}

config/routes.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@
2121

2222
namespace :api, defaults: {format: :json} do
2323
namespace :v1 do
24-
resources :conferences, only: [:index, :show], param: :slug
25-
resources :talks, only: [:show], param: :slug
24+
resources :conferences, only: [:index, :show], param: :slug do
25+
resources :talks, only: [:show], param: :slug
26+
end
2627
resources :speakers, only: [:index, :show], param: :slug
2728
end
2829
end

0 commit comments

Comments
 (0)