Active Scaffold 2 pola edit

Witam

Mam pytanie, czy w Active Scaffold jest mozliwosc dodanie wieciej niz 1 pola update?.
Chodzi mi o to ze przy kazdym wierszu ( ktory ma 2 kolumny), pierwszy update szedl na 1 kolumnę natomiast 2 na 2 kolumne?

Dopisalem w kontrolerze

config.action_links.add :update1, :label => ‘Comment’, :type => :record

co dokladnie tworzy linka, ale nie wiem jak przypoisac do tego linka akcjie.

Czy jest taka mozliwosc? , czy trzeba dopisywac nową definicje w kontrolerze activescaffold?

pozdrawiam
beny18241

Więc tak , mam drugie pytanie dodalem do kontrolera definicje :comm.


class HomeController < ApplicationController
active_scaffold :home do |config|
config.action_links.add :comm, :label => ‘Comment’, :page => false, :type => :record
config.action_links.add :about, :label => ‘–Contact–’, :page => true

   config.label = "borrow tool"
   config.columns = [:title, :body, :char, :sim, :oth, :wyp, :od, :comm]
   list.sorting = {:title => 'ASC'}
                       config.list.per_page=27
                       config.search.link.label = "Search for device or person"
                       config.create.link.label = "Borrow device"
                       config.create.columns.exclude :od
                       config.update.columns = [:od]
                       active_scaffold_config.actions.exclude :delete
                       config.theme = :default
                       config.theme = :blue
                       config.update.link.label = "Give back device"
          end

def comm
@list = Home.find(params[:id])
end

end

Teraz mam idealne pole do edycji ‘Comment’ niestety kiedy klikam update zwraca mi


NameError in HomesController#update

uninitialized constant HomesController
RAILS_ROOT: /home/mpindela/Desktop/rails/ww

Application Trace | Framework Trace | Full Trace
Request

Parameters:

{“commit”=>“Update”,
“_method”=>“put”,
“authenticity_token”=>“kO6l6v3p4YheE06LvI2YS5QsN5x+c45EYhjh03crl3o=”,
“id”=>“47”,
“home”=>{“comm”=>""}}
Show session dump

Response

Headers:

{“Content-Type”=>"",
“Cache-Control”=>“no-cache”}

mozecie mi pomoc ? duzo probowalem ale cos nie wychodzi

beny18241

zapomnialem dodac…

comm.html.erb


Comments

<% form_for(@list) do |f| %>
<%= f.error_messages %>

<%= f.label :comm %>
<%= f.text_area :comm %>

<%= f.submit "update" %>

<% end %>

wiem ze jesty cos nie tak z submitem chyba … prosze o pomoc

Błąd bierze się z nazwy konrtroler - zamiast “Home_s_Controller” masz “HomeController”. Poza tym dodaj znacznik “code=ruby” (w nawiasach kwadratowych), żeby kod się formatował. Tak nie da się tego czytać.

zdaje sobie sprawe ze Nazwa kontrolera tez miala duzy wplyw na blad ,jednak … nie wiem gdzie to zmienic …skopiowalem homecontroller i zminilem nazwe klasy na homescontroller… i rowniez nie dziala

kod zwracany przy Update


LoadError in HomesController#update

Expected /home/mpindela/Desktop/rails/ww/app/controllers/homes_controller.rb to define HomesController
RAILS_ROOT: /home/mpindela/Desktop/rails/ww

Application Trace | Framework Trace | Full Trace
Request

Parameters:

{“commit”=>“Save changes”,
“_method”=>“put”,
“authenticity_token”=>“kO6l6v3p4YheE06LvI2YS5QsN5x+c45EYhjh03crl3o=”,
“id”=>“5”,
“home”=>{“comm”=>""}}
Show session dump

Response

Headers:

{“Content-Type”=>"",
“Cache-Control”=>“no-cache”}

Może inaczej…

dodając ponizszy kod do kontrolera . Wygenerowanego na nowo , pozniej instalujac Active Scaffold…

config.action_links.add :edit. :label => ‘Comment’, :page => false, :type => :record

Tak naprawde nie dodam action_linka a podmienie istniejacy edit_link.

a co jezeli chialbym miec edit i moj ‘Comment’ w kazdym recordzie ?

czy wie moze ktos jak to zrobic ? probowalem dopisywac nowa metode ale trosze nie wychodzi …

----------------/z wczesniejszego posta
LoadError in HomesController#update

Expected /home/mpindela/Desktop/rails/ww/app/homes_controller.rb to define HomesController
RAILS_ROOT: /home/mpindela/Desktop/rails/ww

Application Trace | Framework Trace | Full Trace
Request

Parameters:

{“commit”=>“Save changes”,
“_method”=>“put”,
“authenticity_token”=>“kO6l6v3p4YheE06LvI2YS5QsN5x+c45EYhjh03crl3o=”,
“id”=>“57”,
“home”=>{“comm”=>“dsf”}}
Show session dump

Response

Headers:

{“Content-Type”=>"",
“Cache-Control”=>“no-cache”}


Bardzo prosze o pomoc

beny18241

Zmieniłeś nazwę pliku, a nie zmieniłeś jego zawartości. Plik app/controllers/homes_controller.rb powinien definiować klasę: HomesController. Czyli w tym pliku powinieneś mieć:

class HomesController < ApplicationController

Minister ds. elektro przypomina. Sformatowanie kodu ze znacznikiem code=ruby (w nawiasach kwadratowych) zwiększa szansę na otrzymanie odpowiedzi na Twoje pytanie.

Dzieki ! błedy juz nie wylatuja ale jednak … keidy klimkam update w komntarzach …nic sie nie dzieje :

Logi Mongrela:

SQL (0.1ms) SET NAMES ‘utf8’
SQL (0.1ms) SET SQL_AUTO_IS_NULL=0
Home Columns (14.8ms) SHOW FIELDS FROM homes

Processing HomesController#update (for 127.0.0.1 at 2010-02-02 15:54:04) [PUT]
Parameters: {“commit”=>“update”, “authenticity_token”=>“kO6l6v3p4YheE06LvI2YS5QsN5x+c45EYhjh03crl3o=”, “id”=>“62”, “home”=>{“comm”=>“komentarz”}}
Home Load (0.1ms) SELECT * FROM homes WHERE (homes.id = 62)
SQL (0.1ms) BEGIN
SQL (0.1ms) COMMIT
Redirected to http://localhost:3004/homes/62
Completed in 11ms (DB: 15) | 302 Found [http://localhost/homes/62]
SQL (0.1ms) SET NAMES ‘utf8’
SQL (0.3ms) SET SQL_AUTO_IS_NULL=0
Home Columns (1.2ms) SHOW FIELDS FROM homes

Processing HomesController#show (for 127.0.0.1 at 2010-02-02 15:54:05) [GET]
Parameters: {“id”=>“62”}
Home Load (0.2ms) SELECT * FROM homes WHERE (homes.id = 62)
Rendering template within layouts/homes
Rendering show
Rendered _show_columns (14.2ms)
Rendered _show (25.4ms)
Completed in 89ms (View: 82, DB: 2) | 200 OK [http://localhost/homes/62]


fragment kontrolera nie active_scaffold


def comm
@list = Home.find(params[:id])
end

def update
@list = Home.find(params[:id])
respond_to do |format|
if @list.update_attribute(:comm,params[:comm])
flash[:notice] = ‘List was successfully updated.’
format.html { redirect_to(@list) }
format.xml { head :ok }
else
format.html { render :action => “update” }
format.xml { render :xml => @list.errors, :status => :unprocessable_entity }
end
end
end

Dobra domyslilem sie ze nie potrzebnie tworze update :slight_smile:

jednak w momencie update w komentarzach wyskakuje mi :


NoMethodError in HomesController#update

You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
RAILS_ROOT: /home/mpindela/Desktop/rails/ww

Application Trace | Framework Trace | Full Trace
Request

Parameters:

{“commit”=>“update”,
“_method”=>“put”,
“authenticity_token”=>“kO6l6v3p4YheE06LvI2YS5QsN5x+c45EYhjh03crl3o=”,
“id”=>“30”,
“home”=>{“comm”=>“aaa”}}
Show session dump

Response

Headers:

{“Content-Type”=>"",
“Cache-Control”=>“no-cache”}

wiecie moze co robie zle ?

Bez przestudiowania przynajmniej podstawowego przewodnika po Rails nie ma sensu brać się za ActiveScaffold. W komunikatach zawsze jest dosyć dokładna informacja o tym co robisz źle. Ale forum to nie jest “live-tutorial”, tylko miejsce do zgłaszania konkretnych problemów.