2016-09-20 33 views
0

我有我的索引(Twit模型,twits控制器)的推文列表旁邊的複選框。我想要做的是將檢查過的推文保存到其他模型(重新發布模型,重新發布控制器)。Rails - 從索引保存項目,並將其寫入一個新的模型

Repost模型將具有與Twit相同的屬性。我只想從我的索引視圖中選擇特定的推文並將它們保存到Repost模型中。

這是我的觀點:

<%= form_tag reposts_path do %> 
<ul> 
    <% @twits.each do |twit| %> 
    <li> 
     <%= twit.like %> likes 
     <%= check_box_tag "repost_twit_#{twit.id}" %> - 
     <%= link_to twit_path(twit) do %> 
     <i class="glyphicon glyphicon-eye-open"></i> 
     <% end %> - 
     <%= link_to twit_path(twit), method: :delete do %> 
     <i class="glyphicon glyphicon-trash"></i> 
     <% end %> 
    </li> 
    <% end %> 
</ul> 
<ul> 
    <li></li> 
</ul> 
<%= submit_tag "Add to your Repost library", class: "btn btn-primary" %> 

我有邏輯,我成功了我的Rails控制檯內這樣做,但我不能在應用程序內做到這一點...這將是這樣的Repost.create(like:Twit.first.like)

我明顯錯過了一些東西。謝謝你的幫助。

+0

當您提交此表單時,日誌中顯示的請求參數是什麼。 – Bijendra

+0

您好@Bijendra,我有這條消息=>沒有找到RepostsController模板#創建,渲染頭:no_content我明白,我的查看新/創建丟失,但我想從我的TwitController#索引 – Eric

回答

0

有可用的解決你問題的多個選項。首先,你沒有清楚你想要用Ajax調用或html調用來處理這個問題。每次發送數據時,我都認爲它是帶有完整頁面重新加載的html調用。

讓數據按照當前的方式加載,除了它應該提交給報告的更新動作。所以,現在,

twits_controller.rb 
     def index 
     @twits = Twit.all 
     end 

     def update 
     end 

在更新行動,尋找來自請求參數的複選框屬性,如果找到了,有條件的基礎上建立與蠢模型數據轉播條目。

 Repost.create(:name: "This is name", content: "content") 

後保存,呈現指數模板(create.html.erb)和創建像

 @twits = Twit.all 

一個實例變量作爲期望這將繼續獲取數據。另外,如果要保留複選框值,請確保在twits表中具有屬性以保存該屬性。在每個頁面重新加載時,複選框應該根據db值更改。這當前不會給模板丟失錯誤。

如果您想要使用ajax調用,然後在twits索引頁面上使表單按照另一個答案中的建議提交爲ajax(remote:true)。提交時,使用屬性值來標識複選框並保存在Repost模型中。

+0

感謝您的幫助和時間,您將我指向正確的方向! – Eric

0

如果您不想創建html,請使用ajax。

<%= form_tag reposts_path, remote: true do %> 

,並在您RepostsController#create添加的respond_to:JS

def create 
    Repost.create(params[:repost]) 

    respond_to do |format| 
    format.js 
    end 
end 

,並創建一個app/views/reposts/create.js.erb

+0

感謝您的幫助,感謝! – Eric

相關問題