2017-11-26 16 views
0

[こんにちは、これは私の最初の質問Stackoverflowですので、私と一緒にご負担ください、私は可能な限り詳細を与えるようにします。私はコーディングに新しく、現在はレールアプリで作業しています。私はディスカッションボードを作成しています。私はこれまでユーザーモデルとディスカッションモデルを構築しました。ここでは、ディスカッションはユーザーとユーザーの間で議論があります。私のテストは10行目で失敗しています。新しいディスカッションのリンクが適切なルートに設定されているように見えます。私が試してみると正しいパスが表示されます.15行目では現在のパスがインデックスページにあります。私のテストがうまく書かれていないのか、私が何かを逃してしまったのかどうか分からない。私はこのスクリーンショットと一緒に十分な情報であることを願っています...私は文字通りこれで一日を過ごしました、そして私は知恵の終わりです...どんな助けも大変ありがとうございます。キュウリを使ってRailsルートが動作しない

error message rails routes

私のテスト*テスト*

[1] pry(#<Cucumber::Rails::World>)> current_path 
=> "https://stackoverflow.com/users/1715/discussions" 
[2] pry(#<Cucumber::Rails::World>)> new_user_discussion_path(@user.id) 
=> "https://stackoverflow.com/users/1715/discussions/new" 
[3] pry(#<Cucumber::Rails::World>)> expect(current_path).to 
eq(new_user_discussion_path(@user.id)) 
RSpec::Expectations::ExpectationNotMetError: 
expected: "https://stackoverflow.com/users/1715/discussions/new" 
got: "https://stackoverflow.com/users/1715/discussions" 
からCURRENT_PATHに詮索をバインド

# A user starts a new discussion 
Given("they click on the discussion link") do 
click_link 'DISCUSSIONS' 
end 

Then("they will be redirected to the discussions index page") do 
expect(current_path).to eq(user_discussions_path(@user.id)) 
end 

    When("they click on the new discussion link") do 
    click_link 'New Discussion' 
    end 

    Then("they will be redirected to the new discussion page") do 
    expect(current_path).to eq(new_user_discussion_path(@user.id)) 
    end 

ディスカッションインデックスページ*

<div class="container"> 
    <div class="grid"> 
    <%= render 'discussions_navbar' %> 
    <%= link_to "New Discussion", new_user_discussion_path %> 
    </div> 
</div> 

新しい議論のための*

[1] pry(#<#<Class:0x007fd3a62cf660>>)> new_user_discussion_path 
=> "https://stackoverflow.com/users/1722/discussions/new" 

エラーメッセージ*

When they click on the new discussion link     # features/step_definitions/discussion_steps.rb:10 
     undefined method `discussions_path' for #<#<Class:0x007fd3a62cf660>:0x007fd3a6681740> (ActionView::Template::Error) 
     ./app/views/discussions/_form.html.erb:1:in `_app_views_discussions__form_html_erb__787511772381390310_70273503263920' 
     ./app/views/discussions/new.html.erb:4:in `_app_views_discussions_new_html_erb___371545055918840709_70273503334040' 
     ./features/step_definitions/discussion_steps.rb:11:in `"they click on the new discussion link"' 
     features/discussion.feature:10:in `When they click on the new discussion link' 

フォーム*

<%= simple_form_for @discussion do |d| %> 
    <%= d.input :title, label: "Discussion Title" %> 
    <%= d.input :description %> 
    <%= d.button :submit %> 
<% end %> 

ルート*

user_discussions GET /ユーザー/新ディスカッションリンク上

バインディングPRY :user_id/discussion(。:format)議論の#インデックス

POSTの/users/:user_id/discussions(.:format)#は new_user_discussion GETの/users/:user_id/discussions/new(.:format)のディスカッションを作成ディスカッション#新しい

+0

まっすぐに本当にそうです - 'new_user_discussion_path'は' user_id'のPARAMが必要です。インデックスページビューで提供していません。 – max

+0

私は1 ...すでに、ユーザーIDがパスから範囲内であることを...私のbinding.pryを見てみました:

2:
3: <%= render 'discussions_navbar' %> 4: <% binding.pry %> => 5: <%= link_to "New Discussion", new_user_discussion_path %> 6: 7:
8:
[1]てこ(#<#<クラス:0x007fa0c6075df0 >>) > new_user_discussion_path => "/ users/1750/discussions/new" [2] pry(#<#クラス:0x007fa0c6075df0 >>) – rwill781

答えて

0

してみてください。

<%= simple_form_for [current_user, @discussion] do |d| %>

+0

ありがとうございました...インスタンス変数@current_userを使用しました。ありがとうございました!! – rwill781

+0

もう1つの質問...私の議論のテーブルに保存しているようだが、今は表示することができない...これはサーバーから得られるものだ... DiscussionsController#による処理は " => "test"、 "commit" => "保存"、 "user_id" => "1"} ユーザ負荷(0.4ms)SELECT * "FROM" users "LIMIT $ 1 [[" LIMIT "、1]] (0.3ms)BEGIN SQL(11。($ 1、$ 2、$ 3、$ 4、$ 5)を返す "id"を返します。ディスカッションID? – rwill781

+0

これはサーバーで行われているSQLのエコーです。作成ボタンをクリックすると、インデックスページに戻ります。 – WebDev

関連する問題