0

ホームページからリンクを追加するようにページをセットアップしようとしています。DB 内のリンクを更新しますが、コンテンツは更新しません。ここに私が持っているものがあります:

コントローラー/home_controller.rb

class HomeController < ApplicationController
  def create
    if user_signed_in?
      @new_link = Link.create(:link => params[:email])
      respond_to do |format|
        format.js do
        end
     end
  end
end

ビュー/ホーム/index.html.haml

#home
  = render "shares/home_links"

ビュー/共有/_home_links.html.haml

= simple_form_for Link.new, :remote => true do |f|
  .form-inputs
    = f.input :name, :required => true, :autofocus => true
    = f.input :url, :required => true
    = f.collection_select :category_id, Category.where(:user_id => current_user.id), :id, :name

  .form-actions
    = f.submit 'Save', :class => 'btn btn-info'

ビュー/ホーム/create.js.erb

$('#home').replaceWith("<%= escape_javascript(render :partial => 'shares/home_links') %>");

Firebug コンソールの表示

POST http://localhost:3000/links 302 Moved Temporarily
GET http://localhost:3000/links/45 200 OK (spinner keeps going and browser is slow until I hit refresh)

端末出力は次のとおりです。

Started POST "/links" for 127.0.0.1 at 2012-11-17 23:25:24 -0800
Processing by LinksController#create as JS
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"KPSpEcdrPf1mWMesKT96UY/j1Wozze30LUlno1npT4A=", "link"=>{"name"=>"localhost:3000", "url"=>"http://localhost:3000/", "category_id"=>"5"}, "commit"=>"Save"}
  User Load (0.3ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
   (0.1ms)  BEGIN
  SQL (0.3ms)  INSERT INTO `links` (`category_id`, `created_at`, `name`, `position`, `updated_at`, `url`, `user_id`) VALUES (5, '2012-11-18 07:25:24', 'localhost:3000', NULL, '2012-11-18 07:25:24', 'http://localhost:3000/', 1)
   (0.9ms)  COMMIT
   (0.1ms)  BEGIN
   (0.1ms)  COMMIT
Redirected to http://localhost:3000/links/45
Completed 302 Found in 6ms (ActiveRecord: 1.7ms)


Started GET "/links/45" for 127.0.0.1 at 2012-11-17 23:25:24 -0800
Processing by LinksController#show as JS
  Parameters: {"id"=>"45"}
  Link Load (0.4ms)  SELECT `links`.* FROM `links` WHERE `links`.`id` = 45 LIMIT 1
  Rendered links/show.html.haml within layouts/application (0.9ms)
  User Load (0.3ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
  Rendered layouts/_header.html.haml (2.6ms)
  Rendered layouts/_flash.html.haml (0.2ms)
Completed 200 OK in 22ms (Views: 20.5ms | ActiveRecord: 0.7ms)
4

1 に答える 1

0

行のため、コンテンツは更新されていませんsimple_form_for Link.new, ...。インスタンス変数が設定されているかどうかを確認する代わりに、フォームがレンダリングされるたびに新しいリンク オブジェクトをインスタンス化し@new_linkています。これを次のように変更してみてください。

simple_form_for @new_link || Link.new, ...

編集:ブラウザがフォームの内部状態を管理しているため、ブラウザで現在レンダリングされているフォームを新しいフォームに置き換えるだけでは、フィールドが更新されない場合があります。フィールドの値は、JavaScript を使用して手動で設定する必要があります。たとえば、create.js.erb では次のようになります。

$('#id-for-name-field').val(@new_link.name)
$('#id-for-url-field').val(@new_link.url)
...
于 2012-11-18T08:07:54.473 に答える