Ruby on Rails:从视图错误中创建记录

时间:2014-04-28 20:23:00

标签: ruby-on-rails rails-activerecord

我有一个孤立的问题。

我有一个表格,它从几个不同的模型中填充,它会创建链接以跟随每个相应的视图。

我为每个链接创建的代码应该是相同的,但由于某种原因,链接没有显示在“Baseline”下。我检查过:为每个模型创建方法,它们互相模仿,视图中的代码也只是一个副本 - 所以我不知道下一步要去哪里看。我确定问题是create方法失败了,但我不知道在哪里/如何。

以下是我视图中的代码(我也粘贴了FollowUp3Week的代码,因为它有效):

  <% 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) %> #I left the equal for the screenshot.
  <% end %>
  </td> 

  <td>
  <% if FollowUp3Week.where(subject_id: sub.subject_id).first != nil %>
    <%= link_to "edit", follow_up3_week_path([FollowUp3Week.where(subject_id: sub.subject_id).first]) %>
  <% else %>
    <% FollowUp3Week.create(subject_id: sub.subject_id) %>
  <% end %>
  </td>

这是baselines_controller.rb的创建方法

  def create
    @baseline = Baseline.new(params[:baseline])
    if @baseline.save
      flash[:success] = "Baseline added from create method"
      redirect_to baselines_url
    else
      render 'new'
    end
  end

我还附上了它的样子。如果我从&lt;%=中删除等号,则该单元格将为空白。 an image http://i60.tinypic.com/24q1h0k.png

编辑。我正在从视图中删除所有数据库查询。谢谢您的意见。

2 个答案:

答案 0 :(得分:1)

在基线模型上,把这个

def display_name
  "#{name}" #whatever you like to show including link
end

答案 1 :(得分:1)

你应该真正从你的视野和模型中获得Baseline.where。视图中的AR范围在Rails中是一个严重的禁忌。

在您的基线模式中,您可以执行以下操作:

    def empty_subject(subject_id)
      where(subject_id: subject_id).first != nil 
    end

此外,您似乎正在将数组传递给baseline_path和follow_up3_week_path。 抛弃方括号。