What / when calls create function in an ActionController?


#1

Hi friends ,

i am newbie and was trying to learn rails by following a tutorial
which uses attachment_fu to upload videos .! every thing was working
till i edited something somewhere ! the problem is that nothing
happens when i click the submit button

the new.html.erb is as follows and it displays well too

Upload Advertisements 1


<% form_for(@advertisement, :html => { :multipart => true }) do |f| %>
<%= f.error_messages %>

<%= f.label :title %>: <%= f.text_field :title %>
<%= f.label :description %>: <%= f.text_area :description %>
<%= f.label :advertisement %>: <%= f.file_field :uploaded_data %>
<%= f.submit 'Submit' %> - <%= link_to 'Back', advertisements_path %>

<% end %>

and the create function in the Controller is as follows

def create

@advertisement = Advertisement.new(params[:advertisement])

#@advertisement.write_to_log

if @advertisement.save
   @advertisement.convert
   flash[:notice] = 'Advertisement has been uploaded'
   redirect_to :action => 'index'
else
   @advertisements = Advertisement.find(:all)
   render :action => 'new'
end

end

even deleting the create function , it shows no error but returns to
index page when submit button clicked . it seems that this function is
not called properly

help appreciated
thanks in advance


#2

even deleting the create function , it shows no error but returns to
index page when submit button clicked . it seems that this function is
not called properly

Have you set up your routes.rb file?

SH


#3

http://api.rubyonrails.com/classes/ActionView/Helpers/FormHelper.html

example taken form the above link:

Note: a @person variable will have been created in the controller.

For example: @person = Person.new

<% form_for :person, @person, :url => { :action => “create” } do |f|
%>
<%= f.text_field :first_name %>
<%= f.text_field :last_name %>
<%= submit_tag ‘Create’ %>
<% end %>

what you got is this:
<% form_for(@advertisement, :html => { :multipart => true }) do |f|
%>
<%= f.text_field :title %>
<%= f.text_area :description %>
<%# … %>
<%= f.submit ‘Submit’ %>

now try changing your first line to:
<% form_for :advertisement, @advertisment, :url => { :action =>
“create” }, :html => { :multipart => true } do |f| %>

hope this helps.


#4

My routes.db

ActionController::Routing::Routes.draw do |map|

map.resources :advertisements

map.root :controller => “home”
map.connect ‘:controller/:action/:id’
map.connect ‘:controller/:action/:id.:format’
end


#5

how can i know weather it is called or not

set a debugger.


#6

i tried <% form_for :advertisement, @advertisment, :url => { :action
=>
“create” }, :html => { :multipart => true } do |f| %>

but the result is the same !

will on clicking the submit button automatically call the create
function?
how can i know weather it is called or not