forms - Ruby on Rails: undefined method `' for #<#<Class:>> -
i'm relatively new rails , i've been struggling couple of days. i'd appreciated if can see i've gone wrong.
when view page in web browser following message:
showing c:/users/matt/documents/github/outputer/app/views/studies/index.html.erb line #8 raised:
undefined method `studies_path' #<#:0x6b03808>
8: <%= form_for @new_study |f| %>
studies_controller:
def index @line = current_user.lines.find_by_id(params[:line_id]) @machine = @line.machines.find_by_id(params[:machine_id]) @studies = @machine.studies.paginate(page: params[:page], :per_page => 10) @new_study = @machine.studies.build end def create @study = current_user.lines.machines.study.build(params[:study]) if @study.save flash[:success] = "study created" else flash[:error] = "error : invalid study description" end redirect_to :back end
index.html
.... <section> <%= form_for @new_study |f| %> <div class="field"> <%= f.text_field :description, placeholder: "new study description..." %> </div> <%= f.submit "create", class: "btn" %> <% end %> </section> ....
study model
.... class study < activerecord::base belongs_to :machine belongs_to :line attr_accessible :avg_speed, :avg_uptime, :avg_yield, :description, :duration, :is_active, :start_time, :stop_time, :line_id validates .... has_many :events, dependent: :destroy .... end ....
rake routes:
.... save_line_machine_study put /lines/:line_id/machines/:machine_id/studies/:id/save(.:format) studies#save {:has_many=>:machines} line_machine_studies /lines/:line_id/machines/:machine_id/studies(.:format) studies#index {:has_many=>:machines} post /lines/:line_id/machines/:machine_id/studies(.:format) studies#create {:has_many=>:machines} new_line_machine_study /lines/:line_id/machines/:machine_id/studies/new(.:format) studies#new {:has_many=>:machines} edit_line_machine_study /lines/:line_id/machines/:machine_id/studies/:id/edit(.:format) studies#edit {:has_many=>:machines} line_machine_study /lines/:line_id/machines/:machine_id/studies/:id(.:format) studies#show {:has_many=>:machines} put /lines/:line_id/machines/:machine_id/studies/:id(.:format) studies#update {:has_many=>:machines} delete /lines/:line_id/machines/:machine_id/studies/:id(.:format) studies#destroy {:has_many=>:machines} ....
routes.rb
resources :users resources :lines, :has_many => :machines, only: [:index, :edit, :destroy, :show, :create] resources :machines, only: [:new, :create, :edit, :update] resources :studies end end
if remove form page works fine suggest in form. i've tested controller commands in console , appear fine - can create new study object.
thanks in anticipation
when use form_for
model instance, defaults post
action controller studies_path
. mapped create
in controller.
from looks of it, need add route in routes.rb
handle post request (see resources). need create
method in studies controller.
here guide learning basics of routing in rails.
Comments
Post a Comment