为Phoenix表单+数据库添加了字段。不在show.html.eex中显示

时间:2017-07-17 15:41:29

标签: elixir phoenix-framework

在我的show.html.eex中,我有以下代码:

<h1 class="display-post-title-index-show">
       <%= @post.title %>
    </h1>
       <p class="display-post-body-show">
       <%= @post.body %>
    </p>

它在开发服务器上显示那些字段。

我在post.ex中添加了3个字段:

field :plan, :string
field :done_so_far, :string
field :project_pic, :string

Ran:mix ecto gen.migration add_plan_to_posts

添加了三个字符串字段:

 def change do
     alter table(:stories_posts) do
     add :plan, :string
     add :done_so_far, :string
     add :project_pic, :string
     #timestamps
  end

我运行了混合ecto.migrate创建等。成功迁移。 然后mix run priv/repo/seeds.exs

已添加

 <p class="display-post-body-show">
       <%= @post.plan %>
    </p>

到show.html.eex,但它在重新加载时没有显示。

编辑:

LiveStory.Repo.all LiveStory.Stories.Post 

返回:

[%LiveStory.Stories.Post{__meta__: #Ecto.Schema.Metadata<:loaded, "stories_posts">,
  body: "Dummy summary",
  comments: #Ecto.Association.NotLoaded<association :comments is not loaded>,
  done_so_far: nil, id: 1, inserted_at: ~N[2017-07-17 14:40:18.186146],
  modified_by: #Ecto.Association.NotLoaded<association :modified_by is not loaded>,
  modified_by_id: nil,
  original_post: #Ecto.Association.NotLoaded<association :original_post is not loaded>,
  original_post_id: nil, path: "1", plan: nil, project_pic: nil,
  published: true, removed_by_moderator: false, removed_by_owner: false,
  title: "Dummy Title",
  topic: #Ecto.Association.NotLoaded<association :topic is not loaded>,
  topic_id: 1, updated_at: ~N[2017-07-17 14:40:18.186157],
  upvotes_count: #Ecto.Association.NotLoaded<association :upvotes_count is not loaded>,
  user: #Ecto.Association.NotLoaded<association :user is not loaded>,
  user_id: 1}]

只有:body和:title字段显示存储的数据。 :计划不存在于Repo读数中,而:done_so_far,另一个字段,不显示存储的字符串。我将再次运行迁移和种子。

EDIT2:刚刚删除,设置并创建了数据库。添加了更多虚拟信息。同样的问题。

1 个答案:

答案 0 :(得分:1)

最有可能在lib/live_story/stories/stories.ex中,您有一个用于创建帖子的变更集,如下所示:

def post_changeset(%Post{} = post, attrs) do
  post
  |> cast(attrs, [:title, :body]
  ...
end

请确保在cast(attrs, [...])功能中包含您的属性:plan, :done_so_far, :project_pic,否则在创建或更新帖子时将不予考虑。

此外,如果每个帖子都需要这些字段,您也可以将它们添加到同一变更集中的validate_required([...])函数中。