我有一个'Radios'的模型,在我的主页上(template/page/index.html.eex)
我正在拉最后一次录音。这样可以正常工作,但我正在努力让链接工作以进入该特定记录的显示页面(template/radio/show.html.eex)
。
在控制台中我得到:
== Compilation error on file web/controllers/radio_controller.ex ==
** (CompileError) web/controllers/radio_controller.ex:31: undefined function last_radio/0
很多关于使用@conn的例子:
<%= link "Show", to: radio_path(@conn, :show, radio), class: "button" %>
我尝试将此更改为我对last_radio
:
<%= link "Show", to: radio_path(@last_radio, :show, radio), class: "button" %>
但这不起作用。
也不是:
<%= link "Show", to: radio_path(@conn, :show, last_radio), class: "button" %>
radio_controller
defmodule Radios.RadioController do
use Radios.Web, :controller
alias Radios.Radio
def index(conn, _params) do
radios = Repo.all(Radio)
render conn, "index.html"
end
def show(conn, %{"id" => id}) do
radio = Repo.get!(Radio, id)
render(conn, "show.html", radio: radio)
end
page_controller
defmodule Radios.PageController do
use Radios.Web, :controller
alias Radios.Radio
def index(conn, _params) do
last_radio = Radio |> last |> Repo.one
#|> Radio.sorted
#|> Radios.Repo.one
render(conn, "index.html", last_radio: last_radio)
end
end
我做错了什么?
答案 0 :(得分:3)
如果要在模板中使用控制器中的绑定,则需要在其前面添加@
。因此,对于templates/radio/
文件夹中的链接,请使用:
<%= link "Show", to: radio_path(@conn, :show, @radio), class: "button" %>
和templates/page
使用:
<%= link "Show", to: radio_path(@conn, :show, @last_radio), class: "button" %>
附加说明:
如果从模板渲染部分,则调用模板的绑定不会传递给部分。你需要自己处理它们。我添加了这个,这样可以节省你一些时间。
<%= render "my_partial", conn: @conn, radio: @radio %>