siv*_* rj 1 elixir phoenix-framework
我是phoenix,elixir的新人.我想在new.html.exx上的text_field上获取params [:task_id],类似于下面的rails代码.
<%= f.text_field :task_id, value: params[:task_id] %>
Run Code Online (Sandbox Code Playgroud)
我在iex shell上找到了以下信息
[info] GET /tasks/1/comments/new
[debug] Processing by HelloWorld.CommentController.new/2
Parameters: %{"task_id" => "1"}
Run Code Online (Sandbox Code Playgroud)
我尝试使用IEX.pry并得到以下结果,但我无法将其应用于text_input值.
pry(3)> conn.params["task_id"]
"1"
Run Code Online (Sandbox Code Playgroud)
也尝试下面的代码,但没有运气.
<%= text_input f, :task_id, value: @conn.params["task_id"] %>
Got Error: assign @conn not available in eex template.
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.谢谢.
您可以使用paramsavailable in @conn(可直接使用的所有模板中提供Phoenix.Controller.render).
# new.html.eex
<%= @conn.params["task_id"] %>
Run Code Online (Sandbox Code Playgroud)
如果要在主模板内使用@conn渲染的模板中使用Phoenix.View.render,则需要将其显式传递给新模板:
# new.html.eex
<%= render "form.html", ..., conn: @conn %>
Run Code Online (Sandbox Code Playgroud)
你也可以直接进入params:
# new.html.eex
<%= render "form.html", ..., params: @conn.params %>
Run Code Online (Sandbox Code Playgroud)
并使用@params:
# form.html.eex
<%= @params["task_id"] %>
Run Code Online (Sandbox Code Playgroud)