【发布时间】:2015-06-04 15:11:57
【问题描述】:
我正在使用 form_for 来创建一个新条目。
在我设置的控制器中:
def create_ab_campaign
@campaign = Campaign.find_by(id: params[:id], account_id: current_account.id)
@campaign_id = params[:id]
end
在我看来:
<%= form_for (@campaign), :url => {:controller => "campaigns", :action => "create_new_ab_campaign"} do |f| %>
<div class="form-group">
<%= f.label :name, "name", class: "control-label" %>
<%= f.text_field :name, class: "form-control", placeholder: "name" %>
</div>
<%= f.submit "Save Settings" %>
在提交时,我希望创建一个新条目而不是更新现有条目。
我在控制器中做了以下操作:
def create_ab_campaign_new
@campaign_new = Campaign.new(create_a_new_ab_campaign)
if @campaign_new.save
redirect_to(:controller =>"campaigns", :action =>"index")
else
redirect_to(:action =>"new")
end
end
private
def create_a_new_ab_campaign
params.require(:campaign).permit(:name)
end
我得到以下信息: CampaignsController 中的 NoMethodError#update
它仍然尝试使用更新而不是“create_a_new_ab_campaign”
我使用更新来更新记录 - 这一切正常。
def update
@campaign = Campaign.find_by(id:params[:id], account_id: current_account.id)
@new = create_new_campaign
if @campaign.update_attributes(@new)
redirect_to(:controller =>"campaigns", :action =>"index")
else
render 'edit'
end
end
但如上所述,我想做另一个案例,而不是更新/编辑,并从记录中创建一个新条目。
非常感谢您的帮助!
更新:
完整的错误日志:
CampaignsController#update 中的 NoMethodError nil:NilClass 的未定义方法“update_attributes”
提取的源代码(在 #124 行附近): 122 123 124 125 126 127
@new = create_new_campaign
@new[:page_type].delete_if{ |x| x.empty? }
if @campaign.update_attributes(@new)
redirect_to(:controller =>"campaigns", :action =>"index")
else
render 'edit'
Rails.root: /Users/sschindler/demostore
应用程序跟踪 |框架跟踪 |全跟踪 app/controllers/campaigns_controller.rb:124:in `update'
更新路线
路线:
发布“活动/create_new_ab_campaign”
获取“活动/create_new_ab_campaign”
post "/campaigns/:id/edit" => "campaigns#edit"
get "/campaigns/:id/edit" => "campaigns#edit"
发布“/campaigns/create_ab_campaign”=>“campaigns#create_ab_campaign”
get "/campaigns/create_ab_campaign" => "campaigns#create_ab_campaign"
post "/campaigns/:id" => "campaigns#edit"
post "/campaigns/:id" => "campaigns#new"
get "/campaigns/:id" => "campaigns#edit"
获取“活动/节目”
获取“广告系列/索引”
发布“/campaigns/edit”
get '/campaigns/edit'
【问题讨论】:
-
请发布完整的错误堆栈跟踪。
-
代码中有很多错别字。