Я могу создать новый список клипов, но имя (john) не сохраняется, вместо этого сохраняется путь (/asset/clip_list/56
)! и я получаю это в адресной строке после нажатия на создать
localhost:3000/asset/clip_lists.%23 asset::cliplist:0x7fb4f09751b0\>
и пустая страница вместо перезагрузки страницы с вновь созданным клипом (localhost: 3000 / asset / clip_list / 56).
Вот моя функция
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
...
У меня нет табличного актива в моей БД, это просто пространство имен, которое я использовал для вложенного приложения
вот это новый
def new
@clip_list = Asset::ClipList.new
respond_to do |format|
format.html # new.haml
format.xml { render :xml => @clip_list }
end
end
На самом деле новый список клипов создается, но не сохраняет атрибуты и дает путь (localhost: 3000 / asset / clip_list / 56) в качестве имени