Данные формы не отправляются в параметрах через POST - PullRequest
2 голосов
/ 20 февраля 2012

Когда я отправляю форму, данные не отправляются в сообщении и задаются через параметры.Я не могу на всю жизнь понять, почему.Эта форма находится в действии plan / show, поэтому вы видите, как я устанавливаю там переменную @action.Отправляется через JS.

rout.rb

resources :plans do 
    resources :actions
end

action.rb

belongs_to :plan

plan.rb

has_many :actions

plan_controller.rb

def show
    @plan = current_user.plans.includes(:actions).find(params[:id])
    @action = Action.new

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @plan }
    end
end

actions_controller.rb

before_filter :get_plan    

def create
    @action = @plan.actions.new(params[:action])
    @action.user_id = current_user.id
    @action.save
end

private

def get_plan
    @plan = current_user.plans.find(params[:plan_id])
end

create.js.erb в папке представлений / действий

$('div#actions').prepend("<%= escape_javascript(render @action) %>");
$('div#<%= dom_id(@action) %>').effect('highlight');

_form.html.erb частичное

<%= form_for ([@plan, @action]), remote: true do |f| %>
  <%= f.text_field :desc %>
  <%= f.number_field :days %>
  <%= f.submit %>
<% end %>

параметры, отправленные через POST (отсутствует хэш действия - почему ??)

Started POST "/plans/1/actions"
Parameters: {"utf8"=>"✓", "authenticity_token"=>"**removed**", "commit"=>"Create Action", "plan_id"=>"1"}

Схема БД

create_table "plans", :force => true do |t|
  t.string   "name"
  t.integer  "user_id"
  t.datetime "created_at", :null => false
  t.datetime "updated_at", :null => false
end

create_table "actions", :force => true do |t|
    t.string   "desc"
    t.integer  "plan_id"
    t.integer  "days"
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
end

1 Ответ

2 голосов
/ 20 февраля 2012

Действие - зарезервированное слово.Если вы называете это как-нибудь еще (кроме контроллера, который также зарезервирован), то он будет работать.

http://guides.rubyonrails.org/action_controller_overview.html#routing-parameters

Хэш params всегда будет содержать: controller и: actionключи, но вы должны использовать методы controller_name и action_name для доступа к этим значениям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...