2017-06-04 24 views
0

我想根據以下指南https://elixircasts.io/seo-friendly-urls-with-phoenix在我的應用中實現友好網址。
正在從文章標題ok了DB產生的廢料,但我不能得到這個職位,顯示由塞查找何時收到以下錯誤:Phoenix中的友好網址1.3未定義錯誤

function Driverless.Articles.get_by!/2 is undefined or private

post_controller.ex

... 
    def show(conn, %{"id" => id}) do 
    post = Articles.get_by!(Post, slug: id) 
    render(conn, "show.html", post: post) 
    end 
... 

post.ex

... 
    def changeset(%Post{} = post, attrs) do 
    attrs = Map.merge(attrs, slug_map(attrs)) 
    post 
    |> cast(attrs, [:title, :snippet, :body, :slug]) 
    |> validate_required([:title, :snippet, :body]) 
    end 

    defp slug_map(%{"title" => title}) do 
    slug = String.downcase(title) |> String.replace(" ", "-") 
    %{"slug" => slug} 
    end 
    defp slug_map(_attrs) do 
    %{} 
    end 
... 

我敢肯定,在某個地方有一個小錯誤,但只是不能發現它。

+0

您的意思是做'Repo.get_by!'? – Dogbert

+0

試過:'函數Repo.get_by!/ 2未定義(模塊回覆不可用)'。 v1.3從腳手架生成'Articles.get_by!'。 –

+0

啊,我最近還沒有使用過Phoenix 1.3,自從RC0以來,他們一直在動。 'Driverless.Articles'中有'get_by!/ 2'功能嗎? – Dogbert

回答

0

就解決了這個:

不像藥劑蒙上了原來的例子,我們離開後控制器是:

def show(conn, %{"id" => id}) do 
    post = Articles.get_post!(id) 
    render(conn, "show.html", post: post) 
    end 

我只是做了改變:

articles.ex

來自:

def get_post!(id), do: Repo.get!(Post, id) 

def get_post!(id), do: Repo.get_by!(Post, slug: id)