У меня есть страница событий, которая представляет собой список, и я хочу, чтобы пользователь щелкнул конкретное событие, чтобы создать запрос на приглашение. Я хочу, чтобы запрос был привязан к этому событию, и чтобы данные события (имя, местоположение и т. Д.) Отображались на странице новой формы запроса. События - это один тип «объекта», а запросы - это другой. Одно событие может иметь много запросов, но не другим способом (таким образом, один ко многим). Я могу создать отношение has_many / own_to, если это улучшит ситуацию, или я могу просто указать event_id в запросах - у меня нет предпочтений. Это проект Phoenix 1.4, ничего особенного или нестандартного, поддерживаемый базой данных PostgreSQL.
Что я не могу понять, так это как передать Событие или event_id в форму New Request. Почти все в инфраструктуре Phoenix действительно великолепно, но я не могу найти правильный способ сделать эту простую вещь.
То, что у меня есть сейчас, более или менее основано на основных руководствах:
project / lib / project_web / templates / tms / event / index.html.eex (список событий)
<table><tbody><tr><td><%= link event.title, to: Routes.tms_request_path(@conn, :new) %></td></tr></tbody></table>
Это относится к lib / project_web / controllers / request_controller.ex (controller)
def new(conn, _params) do
changeset = TMS.change_request(%Request{})
render(conn, “new.html”, changeset: changeset)
end
Это идет в lib / project / tms.ex (контекст)
def change_request(%Request{} = request) do
Request.changeset(request, %{})
end
Это идет в lib / project / tms / request.ex (схема)
def changeset(request, attrs) do
request
|> cast(attrs, [:name, :event_id, :email, :request_count]
|> validate_required([:name, :event_id, :email, :request_count]
lib / project_web / tms / request / new.html - это форма с полями для атрибутов запроса
Сейчас все с этим отлично работает, так как я могу нажать на ссылку в событияхПеречислите и перейдите на страницу формы Новые запросы и можете сохранить запрос. Очевидно, хотя нет идентификатора или ассоциации, установленной таким образом. Очевидно, я хочу сделать это способом Elixir, а не взламывать что-то вместе. Я пробовал несколько разных способов передать event_id, но ни один из них, похоже, не работает, поэтому я знаю, что что-то упустил, но на данный момент я не могу понять, что это такое.