rails代码在控制台中不在控制器中工作

时间:2013-02-05 21:18:25

标签: ruby-on-rails rails-activerecord

我一直在寻找几天但是却找不到正在发生的事情。我有代码,当在rails控制台中测试时运行良好,但在控制器中它拒绝创建数据库条目。

我使用的模型是:

class Project < ActiveRecord::Base
  attr_accessible :name, :user_id

  belongs_to :user
  has_many :active_data_sets
  has_many :data_sets, :through => :active_data_sets  
end

class DataSet < ActiveRecord::Base
  attr_accessible :name, :project_id, :filename, :tempfilename

  has_many :active_data_sets
  has_many :projects, :through => :active_data_sets
end

class ActiveDataSet < ActiveRecord::Base
  attr_accessible :active, :data_set_id, :project_id

  belongs_to :project
  belongs_to :dataset  
end

我在我的视图中使用了form_tag,因为在稍后阶段我想上传一个不属于模型的文件。我发现form_tag在那时不起作用。 调用表单的URL是:

http://localhost:3000/data_sets/new?project_id=1

和视图:

<h1>DataSets#new</h1>
<p>Find me in app/views/data_sets/new.html.erb</p>
<%= form_tag import_data_sets_path do %>
    <%= hidden_field_tag 'project_id', params[:project_id] %>
    <p>
        dataset name:
        <%= text_field_tag :name %>
    </p>
    <p>
        <%= submit_tag "Create Dataset" %>
    </p>

<% end %>

在控制器的create方法中,我有以下代码

  def create
    @dataset = DataSet.new
    @dataset.active_data_sets.build(:project_id => params[:project_id].to_i)
    @dataset.name = params[:name]
    @dataset.save
  end

这不会导致数据库中的条目 当我在rails控制台中输入以下代码时,我会在数据库中输入正确的条目:

dataset = DataSet.new
dataset.active_data_sets.build(:project_id => 1)
dataset.name = 'name'
dataset.save

我认为hidden_​​field_tag将所有数据都作为字符串返回,这就是我添加.to_i的原因,但这似乎也没有。但

希望有人看到我没有的问题。

感谢阅读。

0 个答案:

没有答案