我已经坚持这个问题好几天了。首先,我现在知道这段代码非常错误。我一直试图修复它,但在短期内创建此链接更为重要。在我看来(我很抱歉),如果满足某个条件,我会像这样调用create方法:
index.html.erb(controller:subjects_controller)
<%= Baseline.create(subject_id: sub.subject_id) %>
我在页面上多次执行此操作,从几个控制器(即FollowUp3Week.create(subject_id:sub.subject_id)工作)。所有其他控制器都有效。我已检查并仔细检查每个控制器操作并将它们相互比较,它们看起来是一样的。
因此,不是创建记录,而是留下这样的东西:
#<Baseline:0x007f944c4f7f80>
我在射门失误方面遇到了一些麻烦。我再一次知道在视图中使用这些数据库操作是多么错误。但我不知道当我创建页面时,我真的需要它才能运行,然后才能花时间学习如何通过MVC重新排列所有内容。
任何建议都将不胜感激。让我知道您可能想要查看的其他代码。
编辑1。 链接创建:
<% if Baseline.where(subject_id: sub.subject_id).first != nil %>
<%= link_to "edit", baseline_path(Baseline.where(subject_id: sub.subject_id).first) %>
<% else %>
<%= Baseline.create(subject_id: sub.subject_id) %>
<% end %>
答案 0 :(得分:2)
首先,在views
中进行数据库调用是一个很大的问题! NO!强>
其次,回答为什么你看到输出为
#<Baseline:0x007f944c4f7f80>
代表
<%= Baseline.create(subject_id: sub.subject_id) %>
您正在尝试呈现Baseline
模型的实例。它只是如何显示实例。如果要在视图中显示特定属性的值,请执行
<%= Baseline.create(subject_id: sub.subject_id).subject_id %>
此外,此代码不会创建link
。要创建链接,您必须在视图中调用link_to
帮助程序。
您需要做的是,在控制器中移动Baseline.create
电话。在动作中设置一个实例变量,该变量呈现如下特定视图:
def action_name
@baseline = Baseline.create(subject_id: sub.subject_id)
end
在您查看之后,您可以轻松访问@baseline
实例的所有属性。
例如:
访问subject_id
<%= @baseline.subject_id %>
为@baseline
的展示页面创建链接,前提是您有show
的{{1}}行动的RESTful路线
baselines