【问题标题】:Rails migration -- not appearing on show.html.erbRails 迁移——没有出现在 show.html.erb 上
【发布时间】:2016-04-26 15:47:28
【问题描述】:

我有一个名为 b_page 的模型,我想创建另一个列,所以我运行了迁移:

rails g migration add_status_to_b_page status:string

所以迁移成功。用户应该能够更新他们的状态,所以我把它放在 _form.html.erb 上:

<div class="field">
<%= f.label :status %><br>
<%= f.text_field :status %>
</div>

成功了,但后来我把它添加到了 show.html.erb

<%= @b_page.status %>

但每次我创建一个新的 b_page 或编辑当前的页面时,我都没有在 show.html.erb 上看到它

【问题讨论】:

  • 如果您打开 rails 控制台并打印一条您知道将包含 b_page 的记录,该值是否已填充?您可能正在showing 一条没有分配状态的记录。此外,请确保该属性已在您的控制器中列入白名单。
  • 您需要为我们发布更多代码来帮助您。另外,你用 ruby​​-on-rails-3 标记这是正确的吗?我的答案是 vanilla rails-4 。
  • 您是运行迁移(例如rake db:migrate),还是只创建它?
  • 是的,我运行了 bin/rake db:migrate RAILS_ENV=development
  • sorry its rails 4 这是我的 github 存储库:github.com/Hisaan-Anjum/friends

标签: html ruby-on-rails ruby ruby-on-rails-4 migration


【解决方案1】:

如果没有看到您的代码,我猜您必须将 BPageController 中的新参数(状态)列入白名单(在最底部,类似于 def bh_pages_params)。

您可以检查日志(通过表单)进入控制器的参数是否实际到达数据(ActiveRecord 模型),这种白名单方法(称为Strong Parameters)可以保护您的数据。

【讨论】:

  • thx 我解决了我的问题,我忘记在我的控制器中的 params.require(:b_page).permit(:Bpage_name, :banner_img, :profile_img, :status) 中添加状态
  • 太棒了!然后请“关闭”问题,例如通过提供和接受您自己的答案或编辑/接受我的答案。谢谢。
【解决方案2】:

thx 我解决了我忘记添加状态的问题

params.require(:b_page).permit(:Bpage_name, :banner_img, :profile_img, :status) in my controller

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 2012-10-01
    • 2012-06-03
    相关资源
    最近更新 更多