Hey I am quite new to elixir and phoenix and having an issue:
Hey I am sending a request to my backend that looks like this:
axios
.post(PAYMENT_SERVER_URL, {
description,
email: token.email,
source: token.id,
subscriptionID
}
and in the api the call arrives but it only works if i comment out the contents of the post request. I tried to use schema and changeset to make it usable but no avail yet.
use Ecto.Schema
import Ecto.Changeset
schema "objs" do
field(:description)
field(:email)
field(:source)
field(:subscriptionID)
end
def changeset(obj, params \\ %{}) do
obj
|> cast(params, [:descriprion, :email, :source, :subscriptionID])
end
def create(_conn, params) do
changeset(params)
//log it out
end
end
I don’t really understand your question. The actual code producing the error or an error message would be helpful. However there is a typo in the fieds list in the cast
function parameters. It should be :description
, not :description
.
2 Likes
The create function should be in the controller, not in the schema.
I have been using the same setup (React + Phoenix) without trouble. You might show your controller code 
hey the error message is:
iex(1)> [info] OPTIONS /api/users
iex(1)> [debug] ** (Phoenix.Router.NoRouteError) no route found for OPTIONS /api/users (MyApiWeb.Router)
(myApi) lib/myApi_web/router.ex:1: MyApiWeb.Router.__match_route__/4
(myApi) lib/phoenix/router.ex:307: MyApiWeb.Router.call/2
(myApi) lib/myApi_web/endpoint.ex:1: MyApiWeb.Endpoint.plug_builder_call/2
(myApi) lib/plug/debugger.ex:122: MyApiWeb.Endpoint."call (overridable 3)"/2
(myApi) lib/myApi_web/endpoint.ex:1: MyApiWeb.Endpoint.call/2
(plug) lib/plug/adapters/cowboy/handler.ex:16: Plug.Adapters.Cowboy.Handler.upgrade/4
(cowboy) c:/jsproject/myApi/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4
ok i figure to use options in the api instead of post, but the params are empty for some reason
def create(conn, params) do
Logger.info("#{params}")
end
I would like to just print out the params from this request
axios
.post(PAYMENT_SERVER_URL, {
description,
email: token.email,
source: token.id,
subscriptionID
})
ok seems to be cors related issue