7

link_toブロック宣言でクエリ文字列とURLパラメータを取得するにはどうすればよいですか?今、私はこれを持っています、それはうまくいきます:

<%= link_to 'Edit', :edit, :type => 'book', :id => book %>

上記が機能し、出力されます。

http://localhost:3000/books/edit/1?type=book

私がやりたいのは次のようなものです。

<% link_to :edit, :type => 'book', :id => book do %>
    ...
<% end %>

ただし、上記の形式では次のように出力されます。

http://localhost:3000/books/edit/

これは私が探しているものではありません...前の例のようにURLを出力したいと思います。

どうすればこれを達成できますか?

4

4 に答える 4

13

link_toと同じオプションを取りますurl_forそうは言っても、:typeオプションはなく、実際にはブロックを受け入れないため、2番目の例が機能する理由は、ブックビューのスコープ内にあるためだと思います。この回答への返信でTomが述べたようlink_toに、最初の引数 (リンク テキスト) の代わりにブロックを渡すことができます。

Book がリソースの場合は、link_toヘルパーが探している URL を生成するように取得できます。そのためには、rails が作成する便利で自動的に生成されるリソース ルートの 1 つを渡します。rake routesこれを試す前に実行してください:

<%= link_to "Edit", edit_book_path(book) %>

それ以外の場合は、リンクするコントローラー/アクションを明示的に指定できます。

<%= link_to "Edit", :controller => "books", :action => "edit", :id => book %>

ハッピーハッキング。

編集:ほとんど忘れていましたが、リンク先のオブジェクトのIDを宣言した後、それらをバイパスしてクエリ文字列を追加できます。

<%= link_to "Edit", edit_book_path(book, :query1 => "value", :query2 => "value")

だろう製品/books/1/edit?query1=value&query2=value。または:

<%= link_to "Edit", :controller => "books", :action => "edit", :id => book, :query1 => "value", :query2 => "value" %>
于 2010-04-26T06:55:59.913 に答える
0

mime_types.rb ファイルに次を追加します。

Mime::Type.register "テキスト/アプリケーション", :book

于 2010-04-26T10:56:56.240 に答える
0

do ... endRuby は、ブロックをlink_toまたはに送信しているかどうかを認識せず、ブロックに近いため、 にbook送信しています。が返されるので、 が残ります。パラメーターを括弧で囲む必要があります。その間に、コントローラー、アクション、ID の設定でより理解しやすいように書き直します。bookbook do ... endnillink_to :edit, :type=>'book', :id=>nillink_to{:controller=>"books",:action=>"edit",:id=>book}do ... end

于 2010-04-26T07:08:53.807 に答える
0

フォローしてみる

<% link_to(:edit, :type => 'book', :id => book) do %>
    ...
<% end %>

または同じURLを取得するには

<% link_to(:action=>'edit', :type => 'book', :id => book) do %>
    ...
<% end %>
于 2010-04-26T06:45:57.407 に答える