dimanche 17 mai 2015

How to pass params to new view in Ruby on Rails app?

I'm trying to make simple app. I input my first name and last name to simple <%= form_for @data do |f| %> rails form and after submitting it, app should render simple text like this. My first name is <%= data.first_name %> and my last name is <%= data.last_name %>. I don't know why but my app is saying this error:

undefined local variable or method `data' for

It's probably saying it because no params are passed to view.

Here is my code.

routes.rb

resources :data, only: [:new, :create, :index]

data_controller.rb

class DataController < ApplicationController

  def new
    @data = Data.new
  end

  def index
  end

  def create
    @data = Data.new(data_params) 

    if @data.valid?
      redirect_to @data
    else
      render :new
    end
  end

  private
    def data_params
      params.require(:data).permit(:first_name, :second_name)
    end
end

/views/data/new.html.erb

<%= form_for @data do |f| %>

    <%= f.label :first_name %>
    <%= f.text_field :first_name %>

    <%= f.label :second_name %>
    <%= f.text_field :second_name %>

    <%= f.submit 'Continue', class: 'button' %>
<% end %>

/views/data/index.html.erb

<h2>Coolest app ever :D</h2>
<p>My first name is: <%= data.first_name %>.</p>
<p>And my second name is: <%= data.second_name %>.</p>

Please help to find out why params are not passing to next page. Thanks anyways :D

Aucun commentaire:

Enregistrer un commentaire