在我的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:刚刚删除,设置并创建了数据库。添加了更多虚拟信息。同样的问题。
答案 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([...])
函数中。