Ruby on Rails:创建操作似乎失败了

时间:2014-05-01 18:27:09

标签: ruby-on-rails database-connection rails-activerecord record

我已经坚持这个问题好几天了。首先,我现在知道这段代码非常错误。我一直试图修复它,但在短期内创建此链接更为重要。在我看来(我很抱歉),如果满足某个条件,我会像这样调用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 %>

1 个答案:

答案 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