轨道2.3创建不保存名字,而是保存URL

问题描述:

我能够创建一个新的clipList但名字(约翰)不保存它保存路径(/asset/clip_list/56),而不是!我得到这个在地址栏中单击创建 localhost:3000/asset/clip_lists.%23 asset::cliplist:0x7fb4f09751b0\>和一个空白页,而不是与新创建的剪辑重新加载页面后(本地主机:3000 /资产/ clip_list/56)。轨道2.3创建不保存名字,而是保存URL

这里我的功能

def create 
    @clip_list = Asset::ClipList.new(params[:clip_list]) 
    @clip_list.owner = current_user.id 
    respond_to do |format| 
     if @clip_list.save 
     flash[:notice] = 'ClipList was successfully created.' 
     format.html { redirect_to(asset_clip_lists_path(@clip_list)) }# asset_clip_lists_path = /asset/clip_lists 
     format.xml { render :xml => @clip_list, :status => :created, :location => @clip_list } 
    else 
     format.html { render :action => "new" } 
     format.xml { render :xml => @clip_list.errors, :status => :unprocessable_entity } 
    end 
end 

有什么不对?这里是我的模型clip_list.rb

class Asset::ClipList < ActiveRecord::Base 
    establish_connection :assets_development 
    set_table_name "clip_lists" 
    has_many :asset_clips 
    has_many :clip_lists_users 
    has_many :users, :through => :clip_lists_users 
    belongs_to :user, :class_name => "User", :foreign_key => "owner" 
    acts_as_taggable_on :tags 
end 


这是我的_form.haml

form_for(@clip_list, :url => asset_clip_lists_path(@clip_list), :html => {:class => 'form'}) do |f| 
.group 
    = f.label 'Name', 'Name', :class => 'label' 
    = f.text_field :name, :class => "text" 
    %span.description A short name for your clip list 
    .group 
    = f.label 'Description', 'Description', :class => 'label' 
    = f.text_field :description, :class => 'text' 
    .group 
    = f.submit create_or_update(@clip_list).humanize 

这里是耙路线

asset_clip_lists  GET  /asset/clip_lists(.:format)        {:controller=>"asset/asset/clip_lists", :action=>"index"} 
        POST  /asset/clip_lists(.:format)        {:controller=>"asset/clip_lists", :action=>"create"} 
new_asset_clip_list GET  /asset/clip_lists/new(.:format)       {:controller=>"asset/clip_lists", :action=>"new"}  
edit_asset_clip_list GET /asset/clip_lists/:id/edit(.:format)      {:controller=>"asset/asset/clip_lists", :action=>"edit"} 
        GET  /asset/clip_lists/:id(.:format)       {:controller=>"asset/clip_lists", :action=>"show"} 
        PUT  /asset/clip_lists/:id(.:format)       {:controller=>"asset/clip_lists", :action=>"update"} 
        DELETE /asset/clip_lists/:id(.:format)       {:controller=>"asset/clip_lists", :action=>"destroy"} 
delete_asset_clip_list  /asset/clip_list/:id/destroy        {:controller=>"asset/clip_lists", :action=>"destroy"} 
asset_clip_list    /asset/clip_list/:id          {:controller=>"asset/clip_lists", :action=>"show"}  

这里route.rb

map.namespace :asset do |asset| 
asset.resources :clip_lists, :controller => 'asset/clip_lists' 
map.delete_asset_clip_list 'asset/clip_list/:id/destroy', :controller => 'asset/clip_lists', :action => 'destroy' 
map.asset_clip_list 'asset/clip_list/:id', :controller => 'asset/clip_lists', :action => 'show' 

资产只是嵌在我的应用程序文件夹,所以你必须

app/controllers/asset/all asset controllers 
app/models/asset/all asset model 
...  

我没有表的资产在我的DB它只是我用来命名空间另一个应用程序嵌套应用
这里是

def new 
    @clip_list = Asset::ClipList.new 
    respond_to do |format| 
     format.html # new.haml 
     format.xml { render :xml => @clip_list } 
    end 
    end 

交流tually新cliplist创造但不保存属性并给予路径(本地主机:3000 /资产/ clip_list/56)作为名称

+1

请重新格式化您的代码。我们很难阅读帮助你。 – 2012-02-14 17:34:14

+0

谢谢,希望重新格式化帮助 – mamesaye 2012-02-14 17:57:38

+0

太好了。我可以看到你的ClipList模型中有些东西可能会出错。你能否展示ClipList模型中的内容? – 2012-02-14 18:03:24

看来你还没有得到正确的航线。在终端,我会键入“rake routes”检查什么asset_clip_lists_path的路线。如果您没有正确的选择,那么当您提交表格时,它将无法进入正确的位置。

我还会在@clip_list.class的视图中检查@clip_list的类,看看它是否是正确的类“Asset :: ClipList”。

另外,我不明白你具有类名称为“资产:: ClipList”的想法。如果你正试图实现单表继承,你应该试试这个。

class Asset < ActiveRecord::Base 
    ... 

end 

class ClipList < Asset 
    ... 
end 

您可以阅读更多关于STI here

+0

谢谢Phyo Wai Win **@clip_list.class**在视图中给** ** NilClass ** – mamesaye 2012-02-16 15:52:01

+0

我通过删除assets/in routes.rb来修复路由问题。如何解决NilClass问题?asset_clip_lists_path指向右侧页面(索引)。对不起,我有pb格式化! – mamesaye 2012-02-16 16:25:29

+0

如果您在新视图中拥有“@clip_list”的无对象,则在您的控制器的“新建”操作中将其设置为有问题。在那里检查你是如何设置“@clip_list”的。你能否从你的控制器显示你的“新”动作方法? – 2012-02-16 16:33:29