0

ユーザーがページ上のボタンを押して、データベースからランダムなアイテムを取得することで、次のことを実現しようとしています。このアイテムは表示されますが、属性は編集可能です。私が遭遇した問題は、次のとおりです。ランダムID(データベースで有効)を渡して、パーシャルでレンダリングする方法はわかりませんが、特定の属性を更新することはできます。

タイトルからの問題:

  SyntaxError in Tasks#main
  Showing /home/bogdan/ex/bored/app/views/tasks/main.html.erb where line #1 raised:
/home/bogdan/ex/bored/app/views/tasks/main.html.erb:1: syntax error, unexpected ',', expecting ')'
...uffer.append=  form_for (:task, :url => {:action =>'rand_tas...
...                               ^
/home/bogdan/ex/bored/app/views/tasks/main.html.erb:1: syntax error, unexpected ')', expecting keyword_end
...url => {:action =>'rand_task'}) do |f|@output_buffer.safe_co...
...                               ^
../app/views/tasks/main.html.erb:8: syntax error, unexpected keyword_ensure, expecting $end 
Extracted source (around line #1):
1: <%= form_for (:task, :url => {:action =>'rand_task'}) do |f|%>
2:     <%= render(:partial => "rand_show", :locals => {:f => f}) %></p> 
3: <%end%>
4: 
Trace of template inclusion: app/views/tasks/main.html.erb

rand_task出力オブジェクトを_rand_show.html.erbに渡そうとしましたが、afterwartdsは、私がストレスを感じている属性に対してのみ、新しい編集可能なフォームを呼び出します。id

形:

<%= form_for(@task = Task.new) do |f| %>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name, :disabled=>true %>
  </div>
  <div class="field">
    <%= f.label :category %><br />
    <%= f.text_field :category, :disabled=>true %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

ランダムな方法:

def rand_task
    if params[:id] == 'random'
      @task = Task.order('RANDOM()').first
    else
      @task = Task.order('RANDOM()').first // if not  i get a nill related error.
    end 
  end

上記のエラーが発生する理由を教えてください。私が考えている概念は間違っていますか?

4

1 に答える 1

2
<%= form_for (:task, :url => {:action =>'rand_task'}) do |f| %>
            ^

form_for問題はとの間のスペース(です。スペースを削除すると、機能するはずです。

于 2012-09-12T22:17:19.547 に答える