[英]How to get query string value on html.exx file?
我是鳳凰城的長生不老葯。 我正在嘗試在new.html.exx的text_field上獲取params [:task_id],類似於在rails代碼下面。
<%= f.text_field :task_id, value: params[:task_id] %>
我在iex shell上找到了以下信息
[info] GET /tasks/1/comments/new
[debug] Processing by HelloWorld.CommentController.new/2
Parameters: %{"task_id" => "1"}
我嘗試使用IEX.pry並得到以下結果,但是我無法將其應用於text_input值。
pry(3)> conn.params["task_id"]
"1"
也嘗試下面的代碼,但沒有運氣。
<%= text_input f, :task_id, value: @conn.params["task_id"] %>
Got Error: assign @conn not available in eex template.
任何幫助,將不勝感激。 謝謝。
您可以使用@conn
可用的params
副本(在所有直接使用Phoenix.Controller.render
渲染的模板中都可用)。
# new.html.eex
<%= @conn.params["task_id"] %>
如果要在主模板中使用Phoenix.View.render
渲染的模板中使用@conn
,則需要將其顯式傳遞給新模板:
# new.html.eex
<%= render "form.html", ..., conn: @conn %>
您也可以只傳遞params
:
# new.html.eex
<%= render "form.html", ..., params: @conn.params %>
並使用@params
:
# form.html.eex
<%= @params["task_id"] %>
根據注釋,您似乎正在使用Ecto和Changesets。
給定一些模式
schema "foo" do
field :name, :string
field :age, :integer
end
您可以在控制器中添加類似的內容
def new(conn, _params) do
changeset = Foo.changeset(%Foo{})
render conn, "new.html", changeset: changeset
end
這將使您在html視圖文件中具有類似的內容。
= form_for @changeset, foo_path(@conn, :create), [as: :foo], fn f ->
= text_input f, :name
= number_input f, :age
= submit "Submit"
- end
然后返回到您的控制器以創建方法
def create(conn, %{"foo" => foo_params}) do
foo = Foo.changeset(%Foo{}, foo_params)
case Repo.insert(foo) do
{:ok, foo} -> redirect conn, to: foo_path(:show, foo)
{:error, changeset} -> render conn, "new.html", changeset: changeset
end
end
根據您的需要,邏輯可能會有所不同,但是您可以利用變更集為您填寫表格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.